1
if (((document.activeElement).parentNode).tagName == "div") { 
   //do amazing things 
}

出于某种原因,我的一个特定功能不起作用,我认为它与上面的行有关。上面的行在语法上是正确的还是错误的?如果上面的行是正确的,我要么删除问题(因为这样问题就没用了),要么添加函数其余部分的附加信息。

谢谢

4

4 回答 4

4

tagName 以大写形式给出标签,因此它会给出DIV

请参阅https://developer.mozilla.org/en-US/docs/DOM/element.tagName

您可以使用.toLowerCase() == 'div'(如评论中的建议)来消除案例问题。

于 2012-08-15T22:20:45.393 回答
2

你不需要所有的括号。为了安全起见,请使用tagName.toLowerCase().

if (document.activeElement.parentNode.tagName.toLowerCase() == "div") { 
   //do amazing things 
}

可能有些浏览器有时不会给出与其他浏览器相同的大小写。这可以确保您始终比较相同的情况。

于 2012-08-15T22:22:54.633 回答
2

在 HTML 的上下文中,tagName字段中的值总是大写的。但是,如果您在 XML/XHTML 上下文中运行此脚本,它将返回与提供的标签完全相同的名称(不一定是大写)。

尝试调用document.activeElement.parentNode.tagName.toLowerCase()使其始终小写。

于 2012-08-15T22:23:13.270 回答
1

尝试这个

if (((document.activeElement).parentNode).tagName === "DIV") { 
   //do amazing things 
}
于 2012-08-15T22:22:00.237 回答