document.getelementbyid在循环中返回null

时间:2014-05-09 17:55:29

标签: javascript php html

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

4 个答案:

答案 0 :(得分:3)

当您对已加载的文档执行document.write()时,它会清除当前文档并开始编写新的空文档。

因此,只要您在循环中调用第一个document.write(),它就会清除当前文档,然后document.getElementById('Add')将不再找到以前的内容。


您应该做的是使用DOM插入方法(例如.appendChild().insertBefore())将新内容添加到现有加载页面。

答案 1 :(得分:3)

页面加载后无法使用document.write。当你这样做时,它会擦除​​页面内容。

  • 第一个循环找到元素
  • 您写入该页面,它会删除按钮
  • 其他迭代无法找到它,因为它已被删除。

您需要使用DOM方法添加新内容或使用控制台进行调试。

答案 2 :(得分:0)

在我看来,就像你第一次运行for循环一样,你使用document.write。这将清除所有内容,因此document.getElementById('Add')将不返回任何内容。你真正想做的是像'appendChild'或者修改元素的innerHTML。

答案 3 :(得分:0)

每次执行时,

document.write都会清除所有内容。 试着写,

document.getElementById('divid').innerHTML+=Entry+'<br>';

<div id='divid'></div>