Mit getElementById und getElementsByTagName zusammen
Ich habe code, der sieht so aus:
<ul id="effects-list" class="effects-list">
<li data-creative="5">Creative</li>
</ul>
Ich bin versucht, die Daten zu Lesen-Attribut des HTML-mit dem folgenden code:
var effectData = document.getElementById("effects-list").getElementsByTagName("li");
var creative = effectData.getAttribute('data-creative');
alert(creative)
Der obige code funktioniert nicht. Es wirft die folgende Fehlermeldung:
effectData.getAttribute is not a function
Bin ich mit Hilfe von jQuery auf die Seite, und ursprünglich der dies versuchte:
var effectData = $('.effects-list li');
Wieder die gleiche Fehlermeldung.
Was mache ich falsch und wie behebe ich dieses Problem?
Hier ist ein jsFiddle der code.
Hinweis: Es gibt mehr li
Elemente auf der Seite und ich bin Lesen mehr Daten als nur eine li
element. Ich versuche zu vermeiden, dass ad eine separate id zu jedem li
element, wenn ich helfen kann.
getElementsByTagName()
gibt eine collection zurück, nicht ein einziges Element
. Hinweis: der plural getElements...
vs. singular getElementById()
. Sie benötigen Zugriff auf einen index: ...ByTagName("li")[0];
Haben Sie versucht, $("#Effekte-Liste").find("li").attr("data-kreativ") ?
verwenden
var creative = effectData[0].getAttribute('data-creative');
als effectData
ist ein arrayWenn ich mehr als eine
li
- element-Methode gibt null
für das zweite element.siehe jsfiddle.net/arunpjohny/PH7L7/1
InformationsquelleAutor L84 | 2014-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
getElementsByTagName() gibt eine Liste der Elemente mit dem angegebenen tag-Namen, also müssen Sie Zugriff auf das element in dieser Liste mit
[]
:Aktualisiert Fiddle
Wenn Sie auf der Suche für die jQuery-Lösung verwenden, können Sie .Daten():
Aktualisiert Fiddle
InformationsquelleAutor Felix
Versuchen Sie folgenden code
Dieser arbeitet JSFiddle.
Und wenn es mehrere
li
innenul
dann können Sie.each
siehe unten codeInformationsquelleAutor Bhushan Kawadkar