我正在制作一个网页脚本,不能使用getElementById,因为表只有类,所以我循环遍历所有的td元素。
function func(){
alert('Working');
var element = document.getElementsByTagName('td');
var Length = element.length; //740
document.write(Length + "<br />");
var counter = 0;
if(counter < Length){
document.write('Loop Initialized...' + "<br />");
var elementValue = element[counter].firstChild;
var elementType = element[counter].firstChild.nodeType;
if(elementType == 1){
document.write('Invalid value(1)' + "<br />");
}else if(elementType == 2){
document.write('Invalid value(2)' + "<br />");
}else if(elementType == 3){
if(elementValue == 'undefined'){
document.write('Undefined...' + "<br />");
}else{
document.write('*** ' + elementValue + ' ***');
}
}else{
alert("An error has occurred.");
}
counter++;
}
}
</script>
输出:
740
循环初始化...
它似乎甚至没有触及第二个循环..?
答案 0 :(得分:0)
document.getElementsByTagName
会返回“实时”NodeList
,即对DOM的更改会反映在其中。因此,如果您从文档document
中删除元素,则会从通过NodeList
获得的实时document.getElementsByTagName
中删除该元素。在文档被“关闭”(解析完成)后,document.write
会破坏整个DOM,因此只要您编写调试消息,列表就会变空。
这是console.log
的用途!
哦,正如@RevanProdigalKnight所说,你实际上也没有循环。