簡體   English   中英

Internet Explorer上的JavaScript樹問題

[英]JavaScript Tree issue on Internet Explorer

我的JavaScript需要一些幫助。 我的JavaScript代碼在Internet Explorer 8上無法正常工作,顯示空白,並在控制台上顯示了一些錯誤代碼,請為我提供一些解決方案,以使此JavaScript代碼在Internet Explorer上正常工作。 以下是小提琴的鏈接:

小提琴


錯誤代碼

SCRIPT438:對象不支持屬性或方法“鍵”文件:treelist.js,行:12,列:13


var dataSource = {
            "Watch": {
                "Titan": {},
                "parent": {
                    "leaf1": {},
                    "leaf2": {}
                },
            }
        },
    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) {
                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));
}

您的代碼使用Object.keys() ,Internet Explorer 8不支持此功能(在IE9中引入了支持)。 MDN有更多信息 ,包括可用於解決問題的polyfill。 只需將其粘貼到相關的Javascript文件中即可。

正如Zach L所指出的那樣,您的代碼還使用e.stopPropogation() IE8也不支持此功能(同樣,它是IE9中引入的)。 MDN提供了更多信息Jonathan T. Neal提供了一個polyfill,您可以使用它來解決該問題(這是本文結尾處的addEventListener代碼)。 同樣,只需將其粘貼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM