2016-09-08 80 views
-1

我使用setAttribute來存儲一個元素的一些信息,所以後來我可以將它的值恢復到它的innerHTML。 我的問題是什麼element.getAttribute("attr")返回值時,屬性沒有設置(存在)?
看來它在chrome中返回null(這對我很好),但是我讀它也可以返回空字符串,但是如果設置了空字符串,我想使用該值。當它不存在時getAttribute返回值

,所以我不能這樣做明顯:

var value = element.getAttribute("prev_value"); 
if (value) { // won't cover the empty string case, so I need value != null 
} 

是否有哪些不返回任何空的瀏覽器?

+1

if(value)實際上覆蓋空字符串case – Andrey

+2

如何根本不使用無效屬性,但堅持使用[datasets](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes) – adeneo

+0

如果你真的想使用屬性,你應該檢查[hasAttribute](https://developer.mozilla.org/en-US/docs/Web/API/Element/hasAttribute)。 – Prusse

回答

0

Element.getAttribute返回null或空字符串,如果屬性不存在

if (object.getAttribute("prev_value") === null) { 
//data attribute doesn't exist 
}else{ 
//data attribute exists 
} 

IE瀏覽器,瀏覽器基於Gecko的,瀏覽器基於KHTML和尚未歌劇公共釋放所有回報空值。

0

的getAttribute()

「的getAttribute()返回元件上的指定的屬性的值。如果給定的屬性不存在,則返回值爲要麼是空值或‘’(空的基本用法字符串);請參閱Notes以獲取詳細信息。「 - MDN Docs

作爲@Maciej指出,你應該使用.hasAttribute()來返回你的真值。

1

你應該只使用一個typeof運算,看看它是否是一個空字符串

var value = element.getAttribute("prev_value"); 
if (typeof value == "string" && value.length) { 
//..do something 
} 

但是,實際上使if("")返回false,同if(null)

相關問題