下面的代码也会产生同样恼人的错误。它将在循环的第一次传递中返回button元素,但之后只返回null。什么好主意吗?
<script>
function Check_Submission()
{var Entry = [];
for(var i = 0; i < 14; i++)
{
for(var j = 0; j < 10; j++)
{
Entry[i] = document.getElementById('Add');
document.write(Entry + '<br>');
}
}
}
</script>
<button id = 'Add' onclick = "Check_Submission()" >Click me.</button>
不能使用document。在页面加载后写入。当你这样做时,它会删除页面内容。
- 第一个循环找到元素
- 你写入页面,它会移除按钮
- 其他迭代无法找到它,因为它已被删除。
您需要使用DOM方法来添加新内容或使用控制台进行调试。
当您对已经加载的文档执行document.write()
时,它会清除当前文档并开始写入一个新的空文档。
因此,只要调用循环中的第一个document.write()
,它就会清除当前文档,然后document.getElementById('Add')
将不再找到以前的内容。
可能你应该做的是使用DOM插入方法,如.appendChild()
或.insertBefore()
添加新的内容到现有的加载页面。
在我看来,第一次运行for循环时,使用的是document.write。这将清除所有内容,因此document.getElementById('Add')将不返回任何内容。你真正想做的是像'appendChild'或修改元素的innerHTML。
document.write
将在每次执行时清除所有内容。试着写,
document.getElementById('divid').innerHTML+=Entry+'<br>';
<div id='divid'></div>