2011-08-25 84 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";  
} 
相关问题