簡體   English   中英

Internet Explorer 7中索引名稱中的點不起作用

[英]Dots in index names in Internet Explorer 7 does not work

例如,屬性['stem.secid']被Internet Explorer 7解釋為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

這就是為什么你會使用括號字符串作為段標識符。

暫無
暫無

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

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