运行var aa = document.querySelector("#accountCertificateForm td:nth-child(11)").innerText; var astr=aa.replace("%",""); if (astr > 2.0) { console.log('可以购买') var buyBut = document.getElementById("accountBuy") buyBut.click() } else { console.log('不满足条件,稍后刷新') } 报错:1 Uncaught TypeError: Cannot read properties of null (reading 'innerText'),怎么解决
时间: 2024-04-14 13:29:33 浏览: 164
这个错误意味着 `document.querySelector("#accountCertificateForm td:nth-child(11)")` 返回 `null`,即未到匹配的元素。因此,您无法读取 `innerText` 属性。
要解决这个问题,请确保选择器 `#accountCertificateForm td:nth-child(11)` 对应的元素存在于页面上。您可以通过检查页面的 HTML 结构或在控制台中使用该选择器来验证它是否正确。
如果选择器是正确的,但元素是动态生成的,您可能需要在元素可用之前等待一段时间。您可以使用 `setTimeout` 或 `setInterval` 来等待元素加载完成后再执行代码块。
以下是一个示例,使用 `setTimeout` 来等待元素加载:
```javascript
setTimeout(function () {
var aa = document.querySelector("#accountCertificateForm td:nth-child(11)");
if (aa) {
var astr = aa.innerText.replace("%", "");
if (parseFloat(astr) > 2.0) {
console.log('可以购买');
var buyBut = document.getElementById("accountBuy");
buyBut.click();
} else {
console.log('不满足条件,稍后刷新');
}
} else {
console.log('元素未找到');
}
}, 1000);
```
此示例将在等待 1000 毫秒(1 秒)后执行代码块。如果元素在这段时间内加载完成,则会执行相应的逻辑。否则,将输出 `'元素未找到'`。
请注意,根据您的页面结构和需求,您可能需要适当调整等待的时间,以确保元素加载完成后再执行代码。
阅读全文