Mit dem folgenden Markup:Warum wirft "throw" getAttribute in einer For-Schleife keinen Funktionsfehler auf?
<div id="parent">
<div id="one">one</div>
<div id="two">two</div>
<div id="three">three</div>
<div id="four">four</div>
<div id="five">five</div>
<div id="six">six</div>
</div>
<p id="output">
</p>
und der folgenden javascript:
var output = document.getElementById('output');
var items = document.querySelectorAll('#parent > div');
output.innerHTML += '#' + items[2].getAttribute('id') + '<br /><br />';
for(index in items){
output.innerHTML += '#' + items[index].getAttribute('id') + ': ';
output.innerHTML += items[index].innerHTML + '<br />';
}
Chrome den folgenden Fehler in der Konsole führt:
Uncaught TypeError: items[index].getAttribute is not a function
ich diese 11 in IE geprüft und Es gibt keine Fehler in der Konsole. Was seltsam ist, ist, dass die tatsächliche result of the expression korrekt ist.
Weiß jemand, warum das passiert?
var output = document.getElementById('output');
var items = document.querySelectorAll('#parent > div');
output.innerHTML += '#' + items[2].getAttribute('id') + '<br /><br />';
for(index in items){
\t \t output.innerHTML += '#' + items[index].getAttribute('id') + ': ';
\t \t output.innerHTML += items[index].innerHTML + '<br />';
}
#output{
color: blue;
}
<div id="parent">
<div id="one">one</div>
<div id="two">two</div>
<div id="three">three</div>
<div id="four">four</div>
<div id="five">five</div>
<div id="six">six</div>
</div>
<p id="output">
</p>
Alle anderen Antworten scheinen zu arbeiten, aber Ich mag diese eine der besten, weil es eine Art erklärt, warum das ursprüngliche Stück Code nicht funktioniert (dh. Nicht erreichbar die Eigenschaft direkt, daher 'ist keine Funktion') –
Bitte erläutern Sie, warum eine * working * -Funktion meldet: '#undefined: undefined'? – zer00ne
@ zer00ne: aktualisierte die Antwort mit dem Grund und dem örtlich festgelegten Code. Danke, dass du dasselbe gezeigt hast :) –