2011-08-25 83 views

回答

3

很顯然,你不能=測試平等。它需要==(類型轉換標識)或===(標識沒有任何類型轉換)。

在任何情況下,這是一個比較安全做的比較是這樣的:

var selected = document.activeElement; 
if (selected && selected.id) { 
    document.getElementById('test3').innerHTML= "is blank";  
} 

if (selected.id)將是真實的,如果任一selected.id == nullselected.id == undefinedselected.id == ""將覆蓋更多的情況下,不僅僅是if (selected.id == "")

+0

[document.activeElement](http://www.w3.org/TR/html5/editing.html#dom-document-activeelement)(如果suppoerted)必須返回當前活動(聚焦)元素或身體元素。訪問DOM元素[id](http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-63534901)屬性必須返回一個字符串,因此符合瀏覽器永遠不會返回* null *,並且只會返回一個字符串,該字符串將是元素的* id *的值或空字符串。 – RobG

+0

我仍然認爲'if(selected.id)'是更好的通用編程實踐。 – jfriend00

+1

根據MS,IE可能爲document.activeElement返回null:「如果在加載文檔期間以內聯方式訪問此屬性,則會給出null值。」 http://msdn.microsoft.com/en-us/library/ie/ms533065.aspx。 另外,jfriend00的原則是一個很好的原則 - 僅僅因爲今天它符合*瀏覽器的行爲,document.activeElement不應該返回null,這並不意味着在未來這樣的瀏覽器將快速保持這個規則。 – Jon

3

您設置id,而不是比較吧。將=更改爲==

var selected = document.activeElement; 
if (selected.id == "") { 
    document.getElementById('test3').innerHTML= "is blank";  
} 
相關問題