如何解决“未捕获的TypeError:无法读取null的属性'click'”

时间:2019-05-13 03:51:57

标签: javascript google-chrome-extension

我正在开发Chrome扩展程序,并收到错误“未捕获的TypeError:无法读取null的属性'click'”。它可以在控制台中工作,我确保关闭控制台。我正在尝试在下面的网站上运行它。

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

popup.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;

popup.html

<body>
<button class="collapsible">Interfaces</button>
<div class="content">
<button onclick="int()" class="collapsible">Interfaces</button>
</div>
</body>

2 个答案:

答案 0 :(得分:1)

您的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>

答案 1 :(得分:0)

似乎这行代码

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;   
});