Javascript 未捕获类型错误:无法设置属性';onclick';空的

Javascript 未捕获类型错误:无法设置属性';onclick';空的,javascript,html,css,twitter-bootstrap,Javascript,Html,Css,Twitter Bootstrap,我正在创建一个HTML页面,它是使用引导构建的。下面是hello.js文件的最终HTML代码和代码: document.getElementById(“subm”).onclick=function(){ 警报(“你好世界”); } 计算器 计算器 第一 2号 选择权 + - * / 算计 问题似乎是您正在加载元素之前执行脚本 我假设这个脚本是在创建DOM之前添加的hello.js文件中添加的 这里的解决方案是在DOM就绪后执行脚本,如下所示: window.onload = funct

我正在创建一个HTML页面,它是使用引导构建的。下面是hello.js文件的最终HTML代码和代码:

document.getElementById(“subm”).onclick=function(){
警报(“你好世界”);
}

计算器
计算器
第一
2号
选择权

+ - * /
算计
问题似乎是您正在加载元素之前执行脚本

我假设这个脚本是在创建DOM之前添加的
hello.js
文件中添加的

这里的解决方案是在DOM就绪后执行脚本,如下所示:

window.onload = function(){
    document.getElementById("subm").onclick=function(){
        alert("Hello WOrld");
    }
}
所有处理上述DOM元素的JavaScript代码都必须在加载DOM后执行


演示:

这可能是因为脚本在加载DOM之前运行

试着把脚本放进去

window.onload = function() {
   {your code}
}

正如我看到的,您正在使用JQuery,那么使用JQuery的函数为什么要使用javascript呢

以下是您想要的代码:

$(document).ready(function(){
  $("#subm").click(function(){
      alert("Hello World");   
  });
});

我有一个类似的问题…对我来说,它与以下代码一起工作

$(document).on('click','#subm',function() {
    alert("Hello World");
});    
window.onload()并没有解决我的问题,所以我不得不编写代码等待元素加载。您可以这样做:

function waitForLoad(id, callback){
    var timer = setInterval(function(){
        if(document.getElementById(id)){
            clearInterval(timer);
            callback();
        }
    }, 100);
}

waitForLoad("subm", function(){
    console.log("load successful, you can proceed!!");
    document.getElementById("subm").onclick = function()
    {
        alert("I got clicked");
    }
});

脚本位于何处?另一种可能的解决方法是将
移动到页面底部OK我明白了我的意思,我将javascript文件设置为document.onload=function(){document.getElementById(“subm”).onclick=function(){alert(“Hello WOrld”);}但是当我点击按钮时,它没有显示警报,为什么你能找出它@RiteshMehandiratta将其更改为
窗口。onload
将脚本标记移动到页面底部是否被视为良好做法?它对性能或加载有任何影响吗?“window.onload()没有解决我的问题”-然后您遇到了与此问题所问问题不同的问题。OP试图访问的元素的加载没有延迟。window.onload不适用于所有场景,因为您有其他框架覆盖标准窗口。我试图通过添加另一个答案来帮助导航到此页面的用户。考虑我的例子,我使用的是一个角度的JS框架,其中WONDO.NoLoad不起作用,所以如果它有帮助,也不需要投票表决,代码爱好者的回答和我的答案一样,唯一的区别是他使用jQuery,我的解决方案是在标准的JavaScript中。那么,为什么是仇恨?这正是我的工作!没有窗户。谢谢你。欢迎你。特哈斯:D。