javascript - 将 "tagName"属性与 "img"进行比较对于 <img> 元素不起作用

标签 javascript if-statement

我有这个代码片段:

function switchEvent() {
    if (this.lastChild.tagName == "img" ) {
        var remove = this.lastChild;
        this.removeChild(remove);
    }
    else {
        console.log(this.lastChild);

        var image = document.createElement('img');
    }
}

注意,在第二部分中,当我检查console.log时,它打印出:

<img height="20" width="75" src="btn2.png" style="left: -14px; right: 0px;">

它只是跳过“if”并跳转到“else”。 呃呃,什么?

编辑:补充一下,这是一个 onclick 事件。因此“this”指的是被点击的元素。

最佳答案

尝试

if (this.lastChild.tagName == "IMG") {
// ...

“tagName”属性为大写。或者,您不能做出这样的假设并强制解决这个问题:

if (this.lastChild.tagName.toLowerCase() == "img") {
// ...

应该也可以工作。但是,如果您的最后一个子节点不是具有标记名称的节点(例如,如果它是文本或注释节点),那么第二个版本将会遇到问题。你会得到一个异常(exception),但第一个异常(exception)。您可以进行显式 undefined 测试,但大写约定实际上在 HTML DOM Level 1 规范中,因此这是一个非常安全的假设。 (编辑聪明人指出 .nodeName 属性将始终存在,并且它与元素节点的 .tagName 相同。它也是大写的。)

关于javascript - 将 "tagName"属性与 "img"进行比较对于 <img> 元素不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912950/

相关文章:

javascript - 将对象的属性值添加到对象数组

excel - VBA For循环+ if语句错误

python - 为什么 if x,y : raise a SyntaxError?

java - 猜一个数字

bash - Shell脚本if语句总是执行else block

javascript - 收到 document.body 错误。帮助!

javascript - 使用 VueJS 2 禁用 v-for 循环中的按钮

javascript - 如何迭代对象原型(prototype)的属性

javascript - typescript Bluebird 定义

java - for 循环中的 String.charAt(i) 在 Java 中不起作用