• 网页开发中使用javascript语言时浏览器操作时弹出错误:Uncaught TypeError: Cannot set property 'onClick' of null。


      在Chrome浏览器下,遇到了这个错误提示:Uncaught TypeError: Cannot set property 'onClick' of null。

      先贴一下JS的代码:

    document.getElementById("#register button").onclick=function(){
        alert('222');
    }

      后来查了是因为我的JS文件引入的顺序比标签加载的早,so,把js文件的引入放到了body下,但是依然报错。多处查询后,解决办法如下:

      网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式:

      一、通过window.onload来执行脚本代码。window.onload是一个事件,当文档加载完成之后就会触发该事件,可以为此事件注册事件处理函数,并将要执行的脚本代码放在事件处理函数中,于是就可以避免获取不到对象的情况。window.οnlοad=function(){},使用此种方式为window.onload事件绑定事件处理函数,这里绑定的是一个匿名函数,当然也可以绑定非匿名函数。

      二、可以使用addEventListener()attachEvent()为onload事件绑定事件处理函数,addEventListener()是当前标准的一种事件处理函数绑定方式,但是IE8和IE8以下的浏览器并不支持此方式(addEventListener("type",函数名,false))。

    这时用第一种方法就可以解决问题,如果要处理多个事件的绑定,要用第二种方法。

    //方法一:

    window.onload = function () {
        document.getElementById("register").onclick=function(){
            alert('222');
        }
    }

    //方法二:(支持各大浏览器)

    if(window.addEventListener){
        window.addEventListener("load",alert1,false);
        window.addEventListener("load",alert2,false);
    }
    else{
        window.attachEvent("onload",alert1);
        window.attachEvent("onload",alert2);
    }
    
    function alert1(){
        document.getElementById("register").onclick=function () {
            alert('测试1');
        };
    }
    
    function alert2(){
        document.getElementById("register").onclick=function () {
            alert('测试2);
        };
    }

    参考链接:

    1、Uncaught TypeError: Cannot set property 'onClick' of null。

    2、Uncaught TypeError: Cannot set property 'onclick' of null onclick not working

    3、Uncaught TypeError: Cannot set property 'onclick' of null解决办法

  • 相关阅读:
    android一些细节问题
    Android Suspend/resume 过程分析.
    在NDK上建立自己的项目
    ListView加载特效
    Android Log Analysis转
    Android系统默认设置
    一步步分析Log
    Android Framework 分析
    编译安装MariaDB10.0.21
    mariadb多源复制 muiltil source replication
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/13485543.html
Copyright © 2020-2023  润新知