Javascript 在js文件中使用数组
我在JS文件中有以下数组:Javascript 在js文件中使用数组,javascript,internet-explorer,Javascript,Internet Explorer,我在JS文件中有以下数组: var arrayPriority = [ { classPrio : "hoverLineTable", color : "#99bfe6" }, { classPrio : "selectionLigneTable", color : "#FEDA84" }, { classPrio : "jqGrCorres
var arrayPriority = [
{
classPrio : "hoverLineTable",
color : "#99bfe6"
},
{
classPrio : "selectionLigneTable",
color : "#FEDA84"
},
{
classPrio : "jqGrCorrespondance",
color : "#CAFDA8"
}
];
它工作得很好,除了在IE中,我在classPrio:“hoverLineTable”
一行中得到这个错误:
应为标识符、字符串或数字
问题是什么?我如何解决它?以下是调试脏浏览器的脏方法:
<script>alert(1);</script>
<script src="file1.js"></script>
<script>alert(2);</script>
<script src="file2.js"></script>
<script>alert(3);</script>
警报(1);
警报(2);
警惕(3);
假设发生了以下情况:
然后,错误位于警报2和警报3之间。重复此过程,将警报插入
file2.js
,以定位错误行。我很抱歉,我发现问题是因为我没有修改好的文件,所以我让好的文件如下所示:
var arrayPriority = [
{
class : "hoverLineTable",
color : "#99bfe6"
},
{
class : "selectionLigneTable",
color : "#FEDA84"
},
{
class : "jqGrCorrespondance",
color : "#CAFDA8"
}
];
当我们使用关键字:class时,看起来旧版本的InternetExplorer不喜欢。所以,如果我把“classPrio”放进去,那就是工作
感谢您的帮助您只需将按键用双引号括起来即可
var arrayPriority = [
{
"classPrio" : "hoverLineTable",
"color" : "#99bfe6"
},
{
"classPrio" : "selectionLigneTable",
"color" : "#FEDA84"
},
{
"classPrio" : "jqGrCorrespondance",
"color" : "#CAFDA8"
}
];
这是一个JavaScript数组,不是JSON。我看不出有什么问题。@Kvasir:如果它是JSON,A)它不会出现在JavaScript源代码中(除非它在字符串中),B)属性名称会用双引号引起来。@利亚姆:不,JSON是一种数据表示法,JavaScript是一种编程语言。JSON是JavaScript对象初始值设定项语法的一个子集。选中逗号。@Liam:JSON是数据格式,JavaScript是编程语言。它们几乎不是一回事。相同的部分可能看起来相似,但这并不意味着相同。Duck类型在这里不适用。事实上
class
是一个保留关键字:-)是的,但它在chrome和firefox以及IE 11上都可以使用,但在另一个verison上不能使用,但现在我知道不能使用这个;)浏览器之间存在许多差异,这就是“跨浏览器测试”的原因:-D@wawawared&Kvasir:在ES3中,保留字不能用作文本属性名(在对象初始值设定项中,或在foo.propName
等中),这就是为什么DOM在DOM元素上有className
而不是class
和htmlFor
而不是for
。这一点在ES5(大约六年前)中发生了变化,ES5允许它们存在,因为它们实际上并不含糊不清(someElement.for
中的for
不可能启动for
循环)。像IE8这样早于ES5的旧浏览器应用了旧规则。现代浏览器应用当前规则。@Kvasir您应该发布正确的数组:(不,你不知道。JS属性名可以是字符串或标识符。保留引号(至少对于那些名称)是可以的。@Quentin:然而,有趣的是,如果OP真的发布了,这个答案应该是正确的(对于像IE8这样的旧浏览器)@Quentin Yes.。我假设他使用了某种属性。它被认为是一个类,是一个关键字,它需要在引号内。@T.J Crowder负面评价,尽管我是对的。(@Swaprks:嗯,你发布它的时候它是错的。:-)但是是的,它是对的(对于旧浏览器)现在OP已经改变了一切。Beign Downvote是当你试图为一个无用的问题提供帮助时需要支付的账单,非常感谢你的朋友-|