【问题标题】:Need Help to replace currentTarget javascript [duplicate]需要帮助替换 currentTarget javascript [重复]
【发布时间】:2014-03-08 22:50:31
【问题描述】:

我需要一些关于我的 Javascript 的帮助,问题是我的 JavaScript 代码在 Internet Explorer 8 和 Internet Explorer 7 上无法正常工作,它给出的错误消息是 Internet Explorer 8 / 7 不支持 currentTarget。所以我需要一些帮助来解决这个问题,并在 Internet Explorer 8 / 7 上工作。

FIDDLE


var dataSource = ({
    "Pen": ({
        "Cello": ({
            "C2": ({}),
            "C1": ({})
        }),
            "Parker": ({
            "P2": ({}),
            "P1": ({})
        })
    })
});
 var traverseObject = function (obj) {
        var ul = document.createElement("ul"),
            li;

        for (var prop in obj) {
            li = document.createElement("li");
            li.appendChild(document.createTextNode(prop));
            li.onclick = function(e) {
                var classNames = e.currentTarget.className;
                if (classNames.indexOf("hidden") == -1) {
                    e.currentTarget.className += "hidden";
                } else {
                    e.currentTarget.className = e.currentTarget.className.replace("hidden", "");
                }
                e.stopPropagation();
            }

            if (typeof obj[prop] == "object" && Object.keys(obj[prop]).length) {
                console.log(Object.keys(obj[prop]).length + "  " + Object.keys(obj[prop]));
                li.appendChild(traverseObject(obj[prop]));
            } else {
                li.className += "leaf";
            }
            ul.appendChild(li);
            console.log(ul);
        }
        return ul;
    };


window.onload = function () {
    document.getElementById("dvList1").appendChild(traverseObject(dataSource));
    document.getElementById("dvList2").appendChild(sortedObject(dataSource));
}

谢谢

【问题讨论】:

  • 为什么在不使用的时候标记为jQuery?

标签: javascript jquery html css internet-explorer


【解决方案1】:

您可以简单地在事件处理程序中使用this keyword 而不是e.currentTarget

【讨论】:

  • 你能举例说明如何使用这个关键字吗??
  • 只需将每次出现的e.currentTarget 替换为this
  • 太好了,谢谢先生...非常感谢
  • 但是 e.stopPropagation();在 IE 8 和 7 上导致错误
  • return false 也应该这样做。虽然我完全不明白你为什么需要它
【解决方案2】:

我建议你,不要修复兼容问题,而是找一些已经修复兼容问题的工具。 在这里,我建议你使用 JQuery 重写脚本。

li.onclick -> $(li).click(function(event){/*process code*/})

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2018-12-13
    • 2020-12-12
    • 2017-10-05
    • 2017-08-31
    • 1970-01-01
    相关资源
    最近更新 更多