树JavaScript代码不适用于Internet explorer
我需要帮助修复JavaScript程序上的错误。这个程序在Google chrome和firefox上运行得很好,但是代码在internet explorer 8上不起作用,出现了下面提到的一个奇怪错误。请有人给我一个方案。下面给出了fiddle链接 错误是:树JavaScript代码不适用于Internet explorer,javascript,jquery,html,css,list,Javascript,Jquery,Html,Css,List,我需要帮助修复JavaScript程序上的错误。这个程序在Google chrome和firefox上运行得很好,但是代码在internet explorer 8上不起作用,出现了下面提到的一个奇怪错误。请有人给我一个方案。下面给出了fiddle链接 错误是: SCRIPT438: Object doesn't support property or method 'keys' File: treelist.js, Line: 12, Column: 13 谢谢IE8不支持成员声明末尾的
SCRIPT438: Object doesn't support property or method 'keys'
File: treelist.js, Line: 12, Column: 13
谢谢IE8不支持成员声明末尾的逗号 尝试删除它们,它应该可以工作:
dataSource = {
"Watch": {
"Titan": {},
"parent": {
"leaf1": {},
"leaf2": {}
}, <-- remove this
}
您可以通过添加以下内容来解决此问题:
if (!Object.keys) {
Object.keys = function(obj) {
var keys = [];
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
keys.push(i);
}
}
return keys;
};
}
对于JS中的树结构的解释来说,模式太复杂而且有点奇怪 如果您有机会将其重新设计为具有以下内容:
var dataSource = {
name : "Watch",
nodes : [
{
name : "Titan",
nodes: [],
},
{
name : "parent",
node : [
{
name : "leaf1",
nodes : []
},
{
name : "leaf2",
nodes : []
}
]
},
]
};
您的代码可以大大减少,并且在没有黑客攻击的情况下,在没有烦人的跨浏览器内容的情况下运行良好。@user3237973立即尝试!我忘了提到IE8中的Object.keys问题。。。(编辑)你能给我一把小提琴吗。。。我听不懂你说的话,我会尽力跟你走的谢谢
if (!Object.keys) {
Object.keys = function(obj) {
var keys = [];
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
keys.push(i);
}
}
return keys;
};
}
var dataSource = {
name : "Watch",
nodes : [
{
name : "Titan",
nodes: [],
},
{
name : "parent",
node : [
{
name : "leaf1",
nodes : []
},
{
name : "leaf2",
nodes : []
}
]
},
]
};