我需要知道所选元素是否有一个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