getAttribute在不存在时返回值

时间:2016-09-08 15:38:15

标签: javascript string null setattribute

我使用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?

3 个答案:

答案 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()来返回你的真实价值。