在Javascript中检查特定的DOM元素

时间:2014-10-10 06:17:02

标签: 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')) {
            alert(nodeList[item].tagName);
         }
      }
    }

 }
工作的Jsfiddle就在这里 http://jsfiddle.net/ganesh_vellanki/agana62d/6/

有人可以建议我哪里出错

感谢您的时间

3 个答案:

答案 0 :(得分:2)

试试这个:

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);
        }
    }

}

http://jsfiddle.net/agana62d/8/

答案 1 :(得分:1)

您不需要typeofThis is the updated fiddle

代码:

function testclick(handler) {
    var nodeList = handler.childNodes;
    for (var item in nodeList) {
        var tagName = nodeList[item].tagName;
        if (tagName !== 'BR' && tagName != undefined) {
            console.log(tagName);
        }
    }
}

答案 2 :(得分:1)

当你这样做时

typeof (nodeList[item].tagName) !== 'BR'

您实际上正在检查表达式

的结果类型
nodeList[item].tagName !== 'BR'

这将是一个布尔对象,它将始终被视为truthy。这就是为什么您的代码不会跳过BR标记的原因。相反,您可能希望将tagNameBR进行比较

if (nodeList[item].tagName && nodeList[item].tagName.toUpperCase() !== 'BR') {
    alert(nodeList[item].tagName);
}

这会将tagName转换为大写,然后将其与BR进行比较。如果两者不同,则允许执行警报。