Javascript 这种未捕获的类型错误是如何发生的?
我最近将我的调查问卷保存为一个PHP文件,其中包含一个验证脚本,我发现了错误 未捕获的TypeError:无法将属性“onClick”设置为null 它还将我指向javascript文件的第163行,这是第一页“下一步”按钮的函数 到目前为止,我在阅读的所有内容中看到的最常见的原因是它在页面中加载元素之前触发。作为回应,我在body标记的底部链接了.js文件,但它仍然给出了相同的错误 我保存为PHP的HTML文件上的按钮仍然可以正常工作,没有问题。我是这样把一切都编码的Javascript 这种未捕获的类型错误是如何发生的?,javascript,php,html,Javascript,Php,Html,我最近将我的调查问卷保存为一个PHP文件,其中包含一个验证脚本,我发现了错误 未捕获的TypeError:无法将属性“onClick”设置为null 它还将我指向javascript文件的第163行,这是第一页“下一步”按钮的函数 到目前为止,我在阅读的所有内容中看到的最常见的原因是它在页面中加载元素之前触发。作为回应,我在body标记的底部链接了.js文件,但它仍然给出了相同的错误 我保存为PHP的HTML文件上的按钮仍然可以正常工作,没有问题。我是这样把一切都编码的 //the functi
//the function for the page change buttons//
window.onload=function(){
//a bunch of variables come prior to this//
var start = document.getElementById("start_btn");
var p1a = document.getElementById("p1_next");
var p2a = document.getElementById("p2_back");
var p2b = document.getElementById("p2_next");
//more variables continued//
start.onclick=function(){ //coded exactly the same as where the error occurs//
welc_p.style.display="none";
page01.style.display="block";
window.location="#page01";
};
p1a.onclick=function(){ //line 163 where the error occurs//
page01.style.display="none";
page02.style.display="block";
window.location="#page02";
};
p2a.onclick=function(){
page01.style.display="block";
page02.style.display="none";
window.location="#page01";
};
p2b.onclick=function(){
page02.style.display="none";
page03.style.display="block";
window.location="#page03";
};
//more functions continued//
}
我正在使用的HTML作为按钮
<div class="button" id="p1_next" style="width:22%; height:40px; margin:auto;">
<div class="sub_title02">Next</div>
</div>
下一个
我加了一点额外的,只是为了让你们可以看到事情的流程,以及错误部分周围的情况。我还来回地在按钮上添加和“onclick”功能,但仍然不起作用。有人知道这里出了什么问题吗?简单明了的答案是,选择器没有找到指定的元素。你能显示包含html的代码吗
您可能拼错了试图添加单击事件的元素的ID,或者您自己建议在执行javascript时html尚未加载。好的,我偶然发现了导致问题的原因。通过反复查看代码,我意识到我忘了给textarea输入一个名称,就像所有其他输入一样,所以我给了它一个名称,并继续扫描代码,最后我上传了它,注意到问题消失了。为了确定它是什么,我删除了这个名字并测试了它,问题又出现了
因此,我猜如果PHP文件中的textarea没有name属性,它会由于某种原因使自己成为一个自动关闭标记,浏览器会忽略它,直到它运行到另一个具有name属性的textarea的关闭标记。这就是javascript抛出空错误的原因,因为触发器元素不存在,因为它被textarea吃掉了。。。。所以当javascript寻找它时,那里什么都没有。谢谢你花时间帮我解决这个问题。:)
元素不是动态创建的吗?不,我在那里手动编码。没有id为start\u btn
的html元素,因此变量start
为null,您不能将事件处理程序添加到null。不,它在欢迎页面的我的html中,我在这里只包含了与问题相关的元素,以避免产生大量不必要的代码来挖掘。好吧,为什么投票否决了这个?我提供的问题和信息有什么问题吗?html代码位于示例的最底部,您还需要看到更多吗?剩下的是一堆输入字段,所以我只是试图显示围绕错误旋转的重要部分。另外,我将javascript链接到正文的底部,而不是头部部分,以使其最后加载。