html中报错cannot read propertise of null (reading 'getElementByTagName‘)。如何修改正确
时间: 2024-04-27 09:22:06 浏览: 57
这个错误通常出现在代码中使用了一个不存在的元素标签名来调用 `getElementsByTagName()` 方法。要修复这个问题,你需要确保你使用这个方法的元素存在于文档中。如果这个元素还没有被加载,你可以在代码中使用 `window.onload` 或者 `$(document).ready()` 等事件来确保在调用该方法之前已经加载了相应的元素。
如果你确认元素存在,并且仍然遇到这个错误,那么你需要检查是否正确拼写了元素标签名。这个方法只能接受标准的 HTML 元素标签名,如 `div`、`p`、`img` 等等。如果你传递的是一个不存在的标签名,那么就会报出这个错误。
最后,如果你确定元素存在且标签名正确,那么你也可以考虑使用其他 DOM 方法来获取元素,例如 `getElementById()` 或者 `querySelectorAll()`。这些方法也可以用来获取元素,并且拥有更强的灵活性和兼容性。
相关问题
function getTotal(){ var tbody = document.querySelector("tbody"); var tr = tbody.querySelectorAll("tr"); var price = 0; for(var i=0;i<tr.length;i++){ var input = tr[i].querySelector("input"); if(input[0].checked){ price+=parseInt(tr[i].querySelectorAll('td')[2].innerText); } } priceTotal.innerText = price; selectedTotal.innerText =520; }以上代码报错: cannot read propertise of undefined(reading checked),怎么修改
可以尝试将 `input[0]` 改为 `input.checked`,因为 `input` 不是一个数组,是一个 DOM 对象,它没有 `[0]` 这个属性。修改后的代码如下:
```
function getTotal() {
var tbody = document.querySelector("tbody");
var tr = tbody.querySelectorAll("tr");
var price = 0;
for (var i = 0; i < tr.length; i++) {
var input = tr[i].querySelector("input");
if (input.checked) {
price += parseInt(tr[i].querySelectorAll('td')[2].innerText);
}
}
priceTotal.innerText = price;
selectedTotal.innerText = 520;
}
```
这样应该就可以解决这个报错了。
propertise创建
要创建一个 property,需要在类中定义一个方法,并使用 `@property` 装饰器将其转换为属性。以下是一个示例:
```python
class MyClass:
def __init__(self, value):
self._value = value
@property
def value(self):
return self._value
@value.setter
def value(self, new_value):
self._value = new_value
```
在上面的代码中,`@property` 装饰器将 `value()` 方法转换为只读属性。如果想要设置属性的值,则需要再定义一个带有 `@value.setter` 装饰器的方法。这样,即可通过 `my_instance.value` 读取属性的值,也可以通过 `my_instance.value = new_value` 设置属性的值。
阅读全文