2015-04-29 40 views
1
var valueku = url; 
for (var e = 0; e < cotLength; e++) { 
    if (dataprofil[e + 1].one == dataprofil[e].one) { 
     total = parseInt(dataprofil[e + 1].three) + parseInt(dataprofil[e].three); 
     total2 = parseInt(dataprofil[e].four); 
     sum = total * total2; 
     dataprofil[e].three = total; 
     dataprofil.splice(e + 1, 1); 
    } 
    valueku = valueku.concat(dataprofil[e].one, ":", dataprofil[e].two, "=", sum, "&"); 
    alert("inside= " + valueku); //inside loop is 1,2,3,4,5 
} 
alert("outside= " + valueku); //outside loop should be the last value of valueku --> 12345 

問題是爲什麼我只能看到內部循環中的警報消息但外部循環沒有警報消息?外部循環應該是變量valueku的最後一個值。js變量只能在內部循環訪問

+3

是'alert(「outside =」+ valueku);'執行了嗎?你看到「外部=」的信息嗎? – Igor

+0

valueku是否總是有效?你能檢查控制檯的錯誤信息嗎?代碼永遠不會到達外部的原因可能是它會在其中一個循環中拋出異常 –

+0

請仔細檢查您的代碼。你是否已經進入devtools檢查錯誤? http://jsfiddle.net/wkqnexfo/ – garryp

回答

0

可能你上一次迭代JavaScript錯誤, 這阻止了進一步的程序執行:

if (dataprofil[e + 1].one 

你真的有e+1 ST價值?如果cotLengthdataprofil的長度,dataprofil[e + 1]將不確定

+0

是的,我想它搜索價值e + 1 ..和最後陣列,當然我沒有最後的價值進行比較。那麼如何警告循環之外的最後一個值?我真的需要使用邏輯e + 1來比較相同的值與下一個值 – Devisy

+0

只需減少迭代:for(var e = 0; e ma1ao

+0

如果我把(var e = 0; e Devisy