2012-11-02 38 views
0

我认为我正确接近这个,但它似乎没有。在javascript中意外的结果迭代通过一个数组

我有以下功能:

function oMain(){ 
    var allMyData = <? echo htmlspecialchars($jsData, ENT_NOQUOTES, 'utf-8')?>; 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'x'); 
    data.addColumn('number', 'mid'); 
    var i=0; 
    alert(allMyData.length); 
    for(i=0;i<allMyData.length;i++){ 

    } 

    alert(allMyData[i+1,0] + "," + allMyData[i+1,1]); 
} 

其中allMyData看起来是这样的: [["20121031095013","1.315"],["20121031095029","1.315"],["20121031095046","1.315"],["20121031095102","1.315"],["20121031095118","1.315"],["20121031095134","1.315"],....

这对我来说似乎是好了。

现在: 我的警报表明我是这样的: 20121031095013,1.315,20121031095029,1.315

在那里我期待: 20121031095029,1.315

可能有人请帮我看看,我想提出这个错误吗?

谢谢

+0

请不要直接呼应码成JavaScript这样。你正在引入潜在的XSS安全漏洞。此外,'htmlspecialchars()'为您的数据编码_HTML上下文,而不是JavaScript上下文。 – FtDRbwLXw6

+0

是否有可能您想要for循环中的laert? – Dror

回答

0

allMyData[i+1,0]返回其他巨大的数组中的第一个数组。我觉得你这样的意思:

alert(allMyData[i+1][0] + "," + allMyData[i+1][1]);

这样一来,你是选择阵列i+1,和里面的独立价值。

如果你想为你的阵列中的每个阵列的一个独立的警报,你需要把警示语句中的for循环:

function oMain(){ 
    var allMyData = <? echo htmlspecialchars($jsData, ENT_NOQUOTES, 'utf-8')?>; 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'x'); 
    data.addColumn('number', 'mid'); 
    var i=0; 
    alert(allMyData.length); 
    for(i=0;i<allMyData.length;i++){ 
     alert(allMyData[i+1][0] + "," + allMyData[i+1][1]); 
    } 
}​​​​