我只在IE8中遇到一个奇怪的错误,而不是在IE9中。错误消息是:
SCRIPT1028:预期的标识符,字符串或数字
这是我的标记:
<style>
.warrior { color: red; }
.ninja { color: blue; }
.wizard { color: green; }
</style>
<div id="player"></div>
<script src="Scripts/jquery.min.js"></script>
<script>
(function () {
"use strict";
var joeBlow = {
name: "Joe Blow",
class: "ninja",
age: 35
};
$("#player").html(joeBlow.name + " " + joeBlow.age).addClass(joeBlow.class);
}());
</script>
我的期望是DIV
将以“Blue Blow 35”写成蓝色,但我收到上述错误。
在IE8中导致这种情况的原因是什么,而不是IE9或IE10?
答案 0 :(得分:6)
class
是保留关键字。在它周围加上引号'class'
。您可能还必须使用[]
中的joeBlow['class']
表示法访问该媒体资源。
答案 1 :(得分:2)
正如plalx解释的那样,你必须引用class
并使用括号表示法来支持IE 8作为属性名称,因为它是一个保留字。
var joeBlow = {
name: "Joe Blow",
'class': "ninja",
age: 35
};
$("#player").html(/* ... */).addClass(joeBlow['class']);
或者,使用该属性的其他名称。 (注意:这是W3C为className
选择的选项。)
但是,要进一步解释原因:
这是由于所使用的标准不同。具体来说,IE 8实现了ECMAScript 3,而IE 9和10实现了ECMAScript 5。
并且,在这些版本的ECMAScript之间,Object initialisers和dot notation的语法更改为允许任何IdentifierNames(ES5),其中包括 ReservedWords 而不是仅限于标识符(ES3)。
标识符 :: IdentifierName 但不是 ReservedWord