Internet Explorer 7中索引名称中的点不能工作
Dots in index names in Internet Explorer 7 does not work
例如属性("stem.secid")在ie7浏览器中显示为properties.stem.secid并因此不能工作。
这个问题有解决方案或变通方法吗?
我想你可能搞错了。至少,这不是IE9的工作方式:
>> var x = { foo : { bar : 'hello' } };
>> x.foo.bar
"hello"
>> x['foo.bar']
undefined
或者更明确地:
>> var x = {
foo : {
bar : 'hello'
},
'foo.bar' : 'goodbye'
};
>> x['foo.bar']
"goodbye"
这不是真的。点在属性名中是完全有效的(实际上任何字符串都可以用作属性名),并且在IE 7中被正确处理。以下内容在所有浏览器中都能正常工作:
var o = {};
o['stem.secid'] = "foo";
alert(o.stem); // undefined
alert(o['stem.secid']); // foo
这是设计。为什么这对你想要的不起作用?
Javascript允许通过括号字符串表示法或点表示法来标识属性。这允许以下内容是等价的:
my.obj.stem.secid = value
my['obj']['stem']['secid'] = value
但这允许我们通过指定键来编程地选择特定的元素,如下所示:
var key1 = 'obj';
var key2 = 'stem';
var key3 = 'secid';
my[key1][key2][key3] = value
//or alternately just in parts:
my[key1].stem[key3] = value
,但注意,这将不同于如果我们这样做
var key1 = 'obj';
var key2 = 'stem';
var key3 = 'secid';
my.key1.key2.key3 = value
这就是为什么你会使用括号字符串作为段标识符。
相关文章:
- 用javascript将script元素附加到头部;铬不能工作
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- 引导程序's的javascript在本地工作,但在部署到服务器时不能工作
- JQuery脚本没有'Don’我不能工作两次
- "npm运行构建:css"不能工作,而当我自己运行脚本时是可以的
- ng样式在与的预标记中!重要的是不能工作
- angularjs 控制器在指令中使用控制器作为不能工作
- jQuery LightSlider不能工作,但在JSFiddle中工作得很好
- Javascript - 我如何让一个语句工作一次,如果它已经工作了 1 次,则不能工作,然后再次工作
- 我的查询获胜'因为一个剧本,它不能工作(它以错误的方式工作)!?但为什么呢?SESSIONS和PHP
- 我的Javascript代码没有'铬不能工作
- 使用JQuery调整图像大小和重新排列图像;第一次装载时不能工作
- 为什么不是'这个Javascript计算器不能工作
- Javascript在窗口中返回.onbeforeunload不会'铬不能工作
- Javascript代码包含在html中时可以工作,但单独加载/注入时则不能工作
- 简单的jquery选择器不会;铬不能工作
- 为什么不'这个Javascript函数不能工作
- 为什么不'这个js数组函数不能工作
- 视口比例;方向改变后不能工作