文档.Getelementbyid在循环中返回null


document.getelementbyid returns null in a loop

下面的代码也会产生同样恼人的错误。它将在循环的第一次传递中返回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>