根据文档,get_attribute实际上返回属性而不是属性,除非属性不存在,在这种情况下它会回退到属性。
get_property将始终返回该属性。
有没有办法始终获取属性?我发现一个名为“get_attribute”的函数会优先考虑属性值而不是属性值,这很奇怪。
根据文档,get_attribute实际上返回属性而不是属性,除非属性不存在,在这种情况下它会回退到属性。
get_property将始终返回该属性。
有没有办法始终获取属性?我发现一个名为“get_attribute”的函数会优先考虑属性值而不是属性值,这很奇怪。
get_attribute(attribute_name)获取给定的attribute
或property
元素。
此方法将首先尝试返回具有给定名称的属性的值。如果不存在同名的属性,则返回attribute
同名的值。如果没有attribute
该名称,None
则返回。
被认为是真实的值,即等于true
或false
,作为布尔值返回。所有其他非None
值都作为字符串返回。对于不存在的属性或属性,None
返回。
参数:
attribute_name - Name of the attribute/property to retrieve.
例子:
# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
get_property(property_name)获取元素的给定属性。
参数:
property_name - Name of the property to retrieve.
例子:
text_length = target_element.get_property("text_length")
听起来还是很相似?参见下文 ...
当浏览器加载页面时,它会解析HTML 并从中生成 DOM 对象。对于元素节点,大多数标准 HTML 属性自动成为 DOM 对象的属性。
例如,如果标签是:
<body id="page">
那么 DOM 对象有body.id="page"
.
注意:属性-属性映射不是一对一的!
在 HTML 中,标签可能具有属性。当浏览器解析 HTML 为标签创建 DOM 对象时,它会识别标准属性并从中创建 DOM 属性。
因此,当一个元素具有 id 或另一个标准属性时,就会创建相应的属性。但如果属性是非标准的,则不会发生这种情况。
注意:一个元素的标准属性对于另一个元素可能是未知的。例如,
type
是<input>
标签的标准属性,而不是<body>
标签的标准属性。标准属性在相应元素类的规范中进行了描述。
因此,如果一个属性是非标准的,则不会有它的 DOM 属性。在这种情况下,可以使用以下方法访问所有属性:
elem.hasAttribute(name)
: 检查是否存在。elem.getAttribute(name)
: 获取价值。elem.setAttribute(name, value)
: 设置值。elem.removeAttribute(name)
: 删除属性。读取非标准属性的示例:
<body something="non-standard">
<script>
alert(document.body.getAttribute('something')); // non-standard
</script>
</body>
当标准属性更改时,相应的属性会自动更新,并且(有一些例外)反之亦然。但也有例外,例如input.value
仅从attribute
-> 同步到property
,但不同步。这个特性其实派上用场了,因为用户可以修改值,然后在它之后,如果我们想从 HTML 中恢复“原始”值,它就在属性中。