我使用setAttribute
在元素上存储一些信息,以后我可以将值恢复为innerHTML
。
我的问题是当属性未设置(存在)时,element.getAttribute("attr")
返回值究竟是什么?
它似乎在chrome中返回null(这对我有好处),但我读它也可以返回空字符串,但是如果设置了空字符串,我想使用该值。
所以我显然不能这样做:
var value = element.getAttribute("prev_value");
if (value) { // won't cover the empty string case, so I need value != null
}
是否有任何浏览器不返回null?
答案 0 :(得分:1)
您应该只使用typeof并查看它是否为空字符串
var value = element.getAttribute("prev_value");
if (typeof value == "string" && value.length) {
//..do something
}
但是,实际上使if("")
返回false,与if(null)
相同。
答案 1 :(得分:0)
如果属性不存在,Element.getAttribute将返回null或空字符串
if (object.getAttribute("prev_value") === null) {
//data attribute doesn't exist
}else{
//data attribute exists
}
Internet Explorer,基于Gecko的浏览器,基于KHTML的浏览器以及尚未公开发布的Opera都返回null。
答案 2 :(得分:0)
getAttribute()的基本用法
" getAttribute()返回元素上指定属性的值。如果给定的属性不存在,则返回的值将为null或"" (空字符串);有关详细信息,请参阅注释。" - MDN Docs
正如@Maciej指出的那样,你应该使用.hasAttribute()来返回你的真实价值。