2011-11-22 70 views
1

我有這個數組(我知道,技術上沒有javascript中的多維數組這樣的東西)或'對象'。我想要得到的值-888,像這樣:在IE中獲得多維javascript數組的價值

var thisPage = 1; 

    var pagePos = { 
     0: { 
      left: '0', 
      url: 'home', 
     }, 
     1: { 
      left: '-888', 
      url: 'what_we_offer', 
     }, 
     2: { 
      left: '-1776', 
      url: 'clients', 
     }, 
     3: { 
      left: '-2664', 
      url: 'contact_us', 
     } 
    }; 

alert(pagePos[thisPage].left); 

它在Firefox正常工作,但不是IE瀏覽器。爲什麼?

謝謝。

+0

它在IE中工作。 [工作演示](http://jsfiddle.net/PeFeH/)。這是你的實際代碼嗎?還有其他事情出錯了,我們沒有看到。聲明'3'屬性後可能是''後面的','?因爲在IE中這不起作用。 –

+0

@DavidHedlund他沒有說IE版本是什麼版本...... – mattsven

+0

感謝您的回覆,實際上duri下面有它 - 它是拋出它的url屬性之後的尾隨逗號。乾杯。 – Inigo

回答

2

這是因爲在url屬性的值之後的尾隨逗號。在JSON中的最後一個值後面不能有逗號。正確的語法是

var pagePos = { 
    0: { 
     left: '0', 
     url: 'home' 
    }, 
    1: { 
     left: '-888', 
     url: 'what_we_offer' 
    }, 
    2: { 
     left: '-1776', 
     url: 'clients' 
    }, 
    3: { 
     left: '-2664', 
     url: 'contact_us' 
    } 
}; 
+0

你已經明白了!咄。非常感謝! – Inigo

2

如果你把它變成一個對象數組(因爲這是你所訪問的方式):

var thisPage = 1; 

var pagePos = [ 
    { 
     left: '0', 
     url: 'home' 
    }, 
    { 
     left: '-888', 
     url: 'what_we_offer' 
    }, 
    { 
     left: '-1776', 
     url: 'clients' 
    }, 
    { 
     left: '-2664', 
     url: 'contact_us' 
    } 
]; 

alert(pagePos[thisPage].left); 

也...取出後多餘的逗號網址屬性。有些瀏覽器對他們有好處,有些則沒有。

+0

是的 - 它是url屬性之後的額外逗號!謝謝。 – Inigo

0

我可以看到一些IE瀏覽器可能會遇到的問題(這是IE,cmon')。嘗試將數組的性質改爲簡單的對象數組。它們自然會按照它們初始化的順序編號。

var pagePos = [ 
    { 
     left: '0', 
     url: 'home', 
    }, 
    { 
     left: '-888', 
     url: 'what_we_offer', 
    }, 
    { 
     left: '-1776', 
     url: 'clients', 
    }, 
    { 
     left: '-2664', 
     url: 'contact_us', 
    } 
]; 
+0

啊。對。更好,謝謝。 – Inigo

0

這是一種古怪的方式來組合一個數組......我很驚訝它可以在任何瀏覽器中使用!嘗試definining pagePos像這樣intead:

var pagePos = [ // note: bracket! 
     { 
      left: '0', 
      url: 'home', 
     }, 
     { 
      left: '-888', 
      url: 'what_we_offer', 
     }, 
     { 
      left: '-1776', 
      url: 'clients', 
     }, 
     { 
      left: '-2664', 
      url: 'contact_us', 
     } 
    ];