Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';头部选择中的javascript代码是否获取元素?_Javascript - Fatal编程技术网

为什么可以';头部选择中的javascript代码是否获取元素?

为什么可以';头部选择中的javascript代码是否获取元素?,javascript,Javascript,我用javascript编写pi计算器已经有很长一段时间了,我终于完成了。问题是,我在标题部分的脚本: document.getElementById("button").addEventListener('click', (function(){ alert('Beginning…'); }), false); 在我的身体部分有这样的内容: <input type="button" id="button" value="Calculate!!"/> 但是当我打开网页

我用javascript编写pi计算器已经有很长一段时间了,我终于完成了。问题是,我在标题部分的脚本:

document.getElementById("button").addEventListener('click', (function(){
    alert('Beginning…');
}), false);
在我的身体部分有这样的内容:

<input type="button" id="button" value="Calculate!!"/>

但是当我打开网页时,我得到了以下错误:“null不是一个对象,正在计算document.getElementById(“按钮”).addEventListener”

有人知道我的代码为什么不能正常运行吗


谢谢。

将其包装在窗口上
onload
事件:

window.onload = function()
{
    document.getElementById("button").addEventListener('click', (function(){
        alert('Beginning…');
    }), false);
};

或者,如果脚本不必在标题中,则将其放在id为按钮的元素之后。


Javascript会尽快执行,因此当它位于head标记中时,文档尚未完全加载。当文档准备就绪时,您可以使用load命令运行代码

window.addEventListener("load", function(){
    /*your code here*/
});
我想window应该是正确的方法,即使人们认为document.load会在那里(“当文档加载时,执行此操作”,而不是“当窗口加载时执行此操作”) 或者在正文末尾运行代码。您仍然可以将所有方法保存在头脑中。

您有两种选择:

  • 窗口中包装代码。onload
    事件
  • 放在车身底部
    正前方

  • 该元素在页面上尚不存在。为了避免这种情况,请考虑将您的<代码> <代码>移动到您的身体底部(即<代码> <代码>),要么执行<代码> Windows .OnLoad=函数()/<代码>,要么将其添加到关闭<代码> <代码>标签之后。@ PATTMORTER在关闭<代码> <代码>标签之前。除了
    @War10ck之外,不应该在
    之后添加任何内容。因为它位于页面的头部,javascript应该能够找到元素。@Progo不正确。仅当它包装在
    onload
    事件中时。JavaScript被加载并立即解析。这将停止HTML的加载/呈现,直到JavaScript解析完成。(也就是说,当JavaScript解析时,元素将不会加载到页面上)这绝对是一个可能的解决方案,+1你知道,我忍不住想知道为什么这个答案最近被否决了。@ManofSnow是的,现在我可以了,它说我必须等几分钟,然后我就睡着了。
    window.addEventListener("load", function(){
        /*your code here*/
    });