检查Javascript中的特定DOM元素
关于DOM元素的if条件检查,我在代码中有一个小问题,要求我不允许'BR'标记通过检查Javascript中的特定DOM元素,javascript,html,Javascript,Html,关于DOM元素的if条件检查,我在代码中有一个小问题,要求我不允许'BR'标记通过 function testclick(handler) { var nodeList = handler.childNodes; for (var item in nodeList) { if (typeof (nodeList[item].tagName) !== 'undefined') { if (typeof (nodeList[item].tagName !== 'BR'))
function testclick(handler) {
var nodeList = handler.childNodes;
for (var item in nodeList) {
if (typeof (nodeList[item].tagName) !== 'undefined') {
if (typeof (nodeList[item].tagName !== 'BR')) {
alert(nodeList[item].tagName);
}
}
}
}
正在工作的Jsfiddle在这里
有人能告诉我哪里出错了吗
谢谢您的时间您不需要
类型的
代码:
当你这样做的时候
typeof (nodeList[item].tagName) !== 'BR'
实际上,您正在检查表达式结果的类型
nodeList[item].tagName !== 'BR'
这将是一个布尔对象,它将始终被认为是真实的。这就是为什么您的代码不会跳过BR标记。相反,您可能希望将标记名与BR
进行如下比较
if (nodeList[item].tagName && nodeList[item].tagName.toUpperCase() !== 'BR') {
alert(nodeList[item].tagName);
}
这将标记名
转换为大写,然后将其与BR
进行比较。如果两者不同,则允许执行警报。尝试以下操作:
function testclick(handler) {
var nodeList = handler.childNodes;
for (var item in nodeList) {
var tagName = nodeList[item].tagName !== undefined ? nodeList[item].tagName.toLowerCase() : null;
if (tagName !== null && tagName !== 'br') {
alert(tagName);
}
}
}
仅供参考,F12在大多数浏览器中都会打开“控制台”。使用console.log
可以更轻松地打印调试信息,因为您不必一直单击。如果使用children
(IE>9)而不是childNodes
,则只会得到子元素,然后可以跳过标记名!=未定义
检查。@torazaburo很好的信息,非常有用,非常感谢。有些浏览器会将标记定义的大小写发回,因此我通常将其规范化为小写。
function testclick(handler) {
var nodeList = handler.childNodes;
for (var item in nodeList) {
var tagName = nodeList[item].tagName !== undefined ? nodeList[item].tagName.toLowerCase() : null;
if (tagName !== null && tagName !== 'br') {
alert(tagName);
}
}
}