这个Uncaught TypeError如何发生?

时间:2015-09-18 07:40:55

标签: javascript php html

我最近将我的调查问卷保存为PHP文件以包含验证脚本,并提出错误

  

未捕获的TypeError:无法设置属性' onClick'为null

它还指向我的javascript文件的第163行,这是" next"第一页上的按钮。

到目前为止,我在阅读的所有内容中看到的最常见的原因是它在元素加载到页面之前触发。为此,我将.js文件链接到body标签的底部,但它仍然给我同样的错误。

我保存为PHP的HTML文件上的按钮仍可正常工作,没有任何问题。这就是我如何编码所有内容。

//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>

我添加了一些额外的内容,这样你们就可以看到事物的流动以及出现错误的部分。我也来回添加&#34; onclick&#34;按钮功能,但仍然没有工作。有没有人知道这里出了什么问题?

2 个答案:

答案 0 :(得分:0)

答案很简单,你的选择器找不到指定的元素。你能展示一下你的html代码吗?

您拼错了要添加点击事件的元素的ID,或者您自己建议在执行javascript时尚未加载html。

答案 1 :(得分:0)

好的我偶然发现导致问题的原因。从一遍又一遍地看编码我意识到我忘了给textarea输入一个像所有其他输入一样的名字,所以我给它一个并继续扫描代码,最后我上传它并注意到问题已经消失。为了确定它是什么,我删除了名称并对其进行了测试,问题又回来了。

所以我想如果PHP文件中的textarea没有name属性,由于某种原因它会使自己成为一个自动关闭标记,浏览器会忽略它直到它遇到另一个带有name属性的textarea的结束标记。所以这就是导致javascript抛出null错误的原因,因为触发元素不存在,因为它被textarea吃了....所以当javascript找到它时没有任何东西。感谢您抽出宝贵时间帮助我解决问题。 :)