Holen child-Attribut
Habe ich diesen HTML-code mehrere Male eins nach dem anderen:
<li>
<img src="path/to/my/picture.jpg" alt="my picture" />
<span>picture title</span>
</li>
und ich bin versucht zu bekommen den Weg Wert innerhalb der src
Attribut des img
tag in eine variable, und auch der text in den span in einer anderen variable.
Ich versuchte diesen code, aber es funktioniert nicht:
clickedLi.onclick = function() {
var imgPath = clickedLi.firstChild;
var pathLi = imgPath.getAttribute("src");
var imgTitle = clickedLi.lastChild;
var titleLi = imgTitle.data;
Den clickedLi
variable nur eine variable, die in einer Schleife durch ein array mit allen li
- tags im Dokument.
Also das ist der komplette JavaScript-code habe ich :
var myLis = document.getElementsByTagName('li');
var liCnt = myLis.length;
for(var i = 0; i < liCnt; i++) {
var currentLi = myLis[i];
currentLi.onclick = function() {
var imgPath = firstElementChild(this);
var pathLi = imgPath.getAttribute("src");
var imgTitle = lastElementChild(this);
var titleLi = imgTitle.firstChild.data;
var myImgDiv = document.getElementById("test");
myImgDiv.innerHTML = '<h2>' + titleLi + '</h2>';
myImgDiv.innerHTML = '<img src="' + pathLi + '" alt="' + titleLi + '">'
}
}
- Vielleicht versuchen jQuery ist einfach.
- Würden Sie wahrscheinlich wollen
imgTitle.html()
, nicht.data
. - Ich bevorzuge nicht die Verwendung von jQuery für diese. Nur persönliche Präferenz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
.firstElementChild
und.lastElementChild
zu vermeiden, die whitespace-Textknoten.Benötigen Sie ein shim, wenn Sie die Unterstützung von älteren Browsern.
onclick
handler? Und Wann werden Sie ausgeführt, die Schleife, wählt dieli
Elemente? Haben Sie überprüft, dass Sie richtig ausgewählt?this
stattclickedLi
im inneren der hf? Die einzige Möglichkeit, die Sie nutzen könntenclickedLi
im hf wäre es, wenn Sie aufgerufen wird, eine Funktion zum schließen über diese variable.dmyImgDiv
stattmyImgDiv
für die zweite.innerHTML
, aber auch die zweite.innerHTML
Zuweisung überschreibt den ersten. Sollten Sie nur tun, eine Zuordnung mit Hilfe einer einzigen HTML-string. Hier ist eine demo: jsfiddle.net/xmScZ ich update meine Antwort mit dem vollständigen code.code unten tut, was Sie wollen:
getElementsByTagName()
auf die click-onli
tag, anstatt zu Fuß die Kind-Knoten selbst?Mit diesem HTML-Code:
Kannst du es so machen:
Arbeiten demo hier: http://jsfiddle.net/jfriend00/ju9uZ/
Sie diesen code ausführen, nachdem das Dokument geladen ist. Der einfachste Weg das zu tun ist, setzen Sie diesen code direkt vor der
</body>
tag, entweder inline oder in einem enthalten .js-Datei.