代码之家  ›  专栏  ›  技术社区  ›  Jason Owens

如何修复“Uncaught TypeError:无法读取空的属性'click'”

  •  0
  • Jason Owens  · 技术社区  · 5 年前

    我正在开发一个Chrome扩展并得到错误“Uncaught TypeError:Cannot read property'click'of null”。它在控制台中工作,我确保关闭控制台。我正在下面的网站上运行这个。

    https://realtime.demo.sonicwall.com/main.html

    弹出窗口.js

    document.addEventListener('DOMContentLoaded', function () {
    document.querySelector('button').addEventListener('click', int);      
    });
    function int() {
        var source = document.getElementById('j1_64_anchor').click;
    }
    var coll = document.getElementsByClassName("collapsible");
    var i;
    

    <body>
    <button class="collapsible">Interfaces</button>
    <div class="content">
    <button onclick="int()" class="collapsible">Interfaces</button>
    </div>
    </body>
    
    2 回复  |  直到 5 年前
        1
  •  1
  •   random    5 年前

    在你的 html 没有id为的元素 j1_64_anchor document.getElementById('j1_64_anchor').click(); 会失败的。

    document.addEventListener('DOMContentLoaded', function () {
        
        document.querySelector('button').addEventListener('click', int)
    });
      
    function int() {
        console.log('calling');
        var source = document.getElementById('j1_64_anchor').click();
    }
    
    var coll = document.getElementsByClassName("collapsible");
    var i;
    <button class="collapsible">Interfaces</button>
    <div class="content" id="j1_64_anchor">
    <button onclick="int()" class="collapsible">Interfaces</button>
    </div>
        2
  •  0
  •   brk    5 年前

    好像这行代码

    function int() {
        var source = document.getElementById('j1_64_anchor').click;
    }
    

    在dom准备好之前被执行。试着把它放进去 DOMContentLoaded 事件

    document.addEventListener('DOMContentLoaded', function () {
    document.querySelector('button').addEventListener('click', int);   
    function int() {
        var source = document.getElementById('j1_64_anchor').click;
    }
    var coll = document.getElementsByClassName("collapsible");
    var i;   
    });