Das wievielte Name-Element beim Aufruf der Funktion übergeben

  • Themenstarter Themenstarter thommy002
  • Beginndatum Beginndatum
T

thommy002

Hi,

manchmal fallen einem leider nicht die passenden Begriffe für die Suchfunktion ein. Verzeiht mir also, wenn dieses Problem in diesem Forum bereits besprochen wurde.

So der Code:
<img name="images01" onmouseover="mouseOver(FEHLENDE_ANGABE)" src="image0001.jpg" border="0" alt="" />
<img name="images01" onmouseover="mouseOver(FEHLENDE_ANGABE)" src="image0002.jpg" border="0" alt="" />
<img name="images01" onmouseover="mouseOver(FEHLENDE_ANGABE)" src="image0003.jpg" border="0" alt="" />
<img name="images01" onmouseover="mouseOver(FEHLENDE_ANGABE)" src="image0004.jpg" border="0" alt="" />

Ich hätte nun gerne, dass der Funktion mouseOver() die Information mitgegeben wird, um das wievielte Name-Element es handelt.

Gehe ich also über das dritte Bild (image0003.jpg), dann sollte mouseOver(3) ausgeführt werden, da ich das 3. Element mit dem Namen images01 überfahren habe.

Wie ich den Namen selbst übergebe (this.name) hab ich schon rausgefunden. Nur den Rest halt noch nicht.

Hintergrundgedanke (sofern mein Ansatz völlig falsch ist):
Ich möchte mit einem Skript wiederrum auf das überfahrene Element zugreifen und dort CSS-Eigenschaften verändern. Zum Beispiel soetwas wie einen Fade-In-Effekt oder sowas. Allerdings möchte ich es so flexibel wie möglich halten und nicht für jedes einzelne Bild eine eigene ID vergeben. Daher dachte ich mir, dass ich für jede Bilder-Reihe einen eigenen Namen vergebe und dort jeweils das Xte Bild anspreche.
 
Moin!

Die Bilder brauchen keine Namen. Es reicht doch die Position zu ermitteln - sofern sie in einem eigenen Container ohne andere Bilder sind (ein plumpes <div> z.B.). Na, wie dem auch sei: Ersetze einfach FEHLENDE_ANGABE durch "this" (das bedeutet dann auch weniger Getippsel und/oder Traffic, wenn auch minimal) und mach den Rest in der Funktion selbst. Kleines Beispiel:
Javascript:
function mouseOver(that)
{
	var p = that.parentNode;
	var a = that.getAttribute("name");
	var i,j;

	for(i=j=0; i!=p.childNodes.length; ++i)
	{
		if(p.childNodes[i] == that)
		{
			document.getElementById("tu_was_bereich").innerHTML =
				"KindNo: " + ++j + ", Inhalt: "+ that.innerHTML + ", " +
				"Attribut: " + a + ", " + ", RegexNo: " +
				a.replace(/^[^1-9]*([0-9]*).*$/, "$1");
			break;
		}

		if(p.childNodes[i].nodeName == "IMG")
		{
			++j;
		}
	}
}

Gruß
Enum


[EDIT]
Ich weiß nicht warum der blöde Highlighter da ein Pipe- und ein &gt;- Zeichen setzt, aber der Reguläre Ausdruck endet nur auf "/":
Code:
/^[^1-9]*([0-9]*).*$/
 
Zuletzt bearbeitet:
Ich dank Dir für die Hilfe.

Es ist zwar nicht ganz genau das wonach ich gesucht habe, aber es hat mir gezeigt, dass ich mich mit dem Thema 'Nodes' noch etwas mehr beschäftigen sollte :D

Auf jeden Fall bin ich damit ein wesentliches Stück weiter gekommen!

Merci!
 
Moin Thommy,

Wie ich den Namen selbst übergebe (this.name) hab ich schon rausgefunden. Nur den Rest halt noch nicht.

Ich bin jetzt nicht sicher, ob ich dir vielleicht olle Kamellen unterbreite, aber weisst du auch, dass du per this das Element selbst als Objekt übergeben kannst...so wie sich dein Posting liest, ist dies alles, was du benötigst.
 

Neue Beiträge

Zurück