我的代碼,這個小源JavaScript的for循環隨機回報
for (i = 0; i < elements.length; i++) {
console.log(i);
(function (i) {
if (elements[i]["id"] == id) {
index = i;
console.log(i);
}
})(i);
}
console.log(index);
我想找到一個數組元素的索引,其中子元素「ID」 = ID;但它有時會返回0 simetimes 1.此代碼位於類內的函數中。我調用了兩次相同的函數,但在類之外使用了不同的參數,所以首先它必須顯示0和1,但有時顯示1和0。所以你能幫助我嗎?我也嘗試過這種方法,但它不起作用。
var i = 0;
while (i < elements.length) {
console.log(elements[i]["id"]);
if (elements[i]["id"] == id) {
index = i;
break;
} else if (elements[i]["id"] != id) {
i++;
}
}
console.log(index);
Here is my test page,如果你使用Chrome打開它(有時候它發生,但在Firefox它發生主要是)你會看到,有時小的形象出現,但有時,當你按下按鈕在前看不見。您還可以看到控制檯輸出「檢查元素 - >控制檯」
編輯
我改變了我的代碼,這樣更好的調試(如蘭多的建議):
for (i in elements){
console.log("comparing elements['"+ i +"']['id']: "+ elements[i]["id"] +" with id:' "+ id + "'");
if(elements[i]["id"] == id){
index = i;
}
}
console.log(index);
,並得到控制檯輸出中:
comparing elements['0']['id']: id2 with id:' id1' Slideshow.js:140
comparing elements['1']['id']: id1 with id:' id1' Slideshow.js:140
1 Slideshow.js:147
comparing elements['0']['id']: id2 with id:' id2' Slideshow.js:140
comparing elements['1']['id']: id1 with id:' id2' Slideshow.js:140
0
當它應該是:
comparing elements['0']['id']: id1 with id:' id1' Slideshow.js:140
comparing elements['1']['id']: id2 with id:' id1' Slideshow.js:140
0 Slideshow.js:147
comparing elements['0']['id']: id1 with id:' id2' Slideshow.js:140
comparing elements['1']['id']: id2 with id:' id2' Slideshow.js:140
1
EDIT 2
看到它原來,在數組對象「要素」的改變的地方,elements[0]["id"]
becames輸出後"id2"
它應該是"id1"
我仍然不能difinetly說爲什麼會這樣或如何解決它。所以請如果你有任何想法分享它。
else if(elements [i] [「id」]!= id)??你可以用其他替換 – CloudyMarble
我試過了,同樣的問題。 – Irakli
這不是一個答案,而是一個評論:) – CloudyMarble