Javascript 如果document.activeElement=”则返回true的简单条件&引用;

Javascript 如果document.activeElement=”则返回true的简单条件&引用;,javascript,Javascript,我需要知道所选元素是否有ID 我做错了什么 var selected = document.activeElement; if (selected.id = "") { document.getElementById('test3').innerHTML= "is blank"; } 谢谢您正在设置id,而不是比较它。将=更改为= var selected = document.activeElement; if (selected.id == "") { docu

我需要知道所选元素是否有ID

我做错了什么

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

谢谢

您正在设置id,而不是比较它。将
=
更改为
=

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

您正在设置id,而不是比较它。将
=
更改为
=

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==”)

更多的情况。显然,你不能用
=
测试等式。它需要
==
(带有类型转换的标识)或
===
(没有任何类型转换的标识)

在任何情况下,以这种方式进行比较会更安全一些:

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==”
必须返回当前活动(聚焦)元素或body元素,则
if(selected.id==”)

将覆盖比
if(selected.id==”)更多的情况。访问DOM元素属性必须返回一个字符串,因此一致性浏览器永远不会返回null,只会返回一个字符串,即元素id的值或空字符串。我仍然认为
if(selected.id)
是更好的通用编程实践。根据MS,IE可能会为document.activeElement返回null:“如果在加载文档期间内联访问此属性,则会为其提供null值。”。另外,jfriend00的原则是合理的——仅仅因为现在document.activeElement永远不应该返回null是符合浏览器行为的,这并不意味着将来这样的浏览器将坚持这一规则。(如果支持)必须返回当前活动(聚焦)元素或主体元素。访问DOM元素属性必须返回一个字符串,因此一致性浏览器永远不会返回null,只会返回一个字符串,即元素id的值或空字符串。我仍然认为
if(selected.id)
是更好的通用编程实践。根据MS,IE可能会为document.activeElement返回null:“如果在加载文档期间内联访问此属性,则会为其提供null值。”。另外,jfriend00的原则是合理的——仅仅因为现在document.activeElement永远不应该返回null是符合浏览器行为的,这并不意味着将来这样的浏览器将坚持这一规则。