我需要知道所選元素是否有一個ID。簡單條件返回true如果document.activeElement =「」
我在做什麼錯?
var selected = document.activeElement;
if (selected.id = "") {
document.getElementById('test3').innerHTML= "is blank";
}
感謝
我需要知道所選元素是否有一個ID。簡單條件返回true如果document.activeElement =「」
我在做什麼錯?
var selected = document.activeElement;
if (selected.id = "") {
document.getElementById('test3').innerHTML= "is blank";
}
感謝
很顯然,你不能=
測試平等。它需要==
(類型轉換標識)或===
(標識沒有任何類型轉換)。
在任何情況下,這是一個比較安全做的比較是這樣的:
var selected = document.activeElement;
if (selected && selected.id) {
document.getElementById('test3').innerHTML= "is blank";
}
if (selected.id)
將是真實的,如果任一selected.id == null
或selected.id == undefined
或selected.id == ""
將覆蓋更多的情況下,不僅僅是if (selected.id == "")
。
您設置id,而不是比較吧。將=
更改爲==
。
var selected = document.activeElement;
if (selected.id == "") {
document.getElementById('test3').innerHTML= "is blank";
}
[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
我仍然認爲'if(selected.id)'是更好的通用編程實踐。 – jfriend00
根據MS,IE可能爲document.activeElement返回null:「如果在加載文檔期間以內聯方式訪問此屬性,則會給出null值。」 http://msdn.microsoft.com/en-us/library/ie/ms533065.aspx。 另外,jfriend00的原則是一個很好的原則 - 僅僅因爲今天它符合*瀏覽器的行爲,document.activeElement不應該返回null,這並不意味着在未來這樣的瀏覽器將快速保持這個規則。 – Jon