想請問我使用window.open呼叫另一個網頁傳值回來,值為一個json
{"B_ID":["123456789","987654321"],"PAGE":"B"}
程式會依照對應陣列中的值去勾選對應的checkbox,但將陣列轉出後用
JQ的$.each()或js的for(),在電腦上執行都正常可以跑正常的次數,但是我用手機去測試卻都只能跑一次只有一個值,如果將陣列寫死卻又可以正常執行 想請問為甚麼?? var BIDArr=json.B_ID; $.each(BIDArr,function (index) { $("#GT"+BIDArr[index]).prop("checked",true); $("#GT"+BIDArr[index]).parent().parent().css({"background-color":'#BBFF00'}); });
json跑for或$.each 的"列舉"是 [ ]
所以你的server丟回來的應該是
[
{"B_ID":["123456789","987654321"],"PAGE":"B"},
{"B_ID":["323456789","xxxxxaaaa"],"PAGE":"C"},
];
打個比方
用JQ的each
$.post({ ............ })
.done(function(data){
$.each(data,function(i,v){
// 當物件用
console.log( v.B_ID );
console.log( v.PAGE );
//或是用具名陣列也通
console.log( v['B_ID'] );
};
});
所以你的js
$("#GT"+BIDArr[i]).prop("checked",true);
要這樣改
(如果你改成陣列來EACH的話)
$("#GT"+ v.B_ID ).prop("checked",true);
謝謝japhenchen的回答~剛剛發現手機部分會自動在每個號碼後面多加空白trim後已解決~但不懂的地方為電腦跟手機一樣的程式碼為甚麼會有不同的結果
可以將
$.each(BIDArr,function (index) {
$("#GT"+BIDArr[index]).prop("checked",true);
$("#GT"+BIDArr[index]).parent().parent().css({"background-color":'#BBFF00'});
});
改成
$.each(BIDArr,function (index,bid) {
$("#GT"+bid).prop("checked",true);
$("#GT"+bid).parent().parent().css({"background-color":'#BBFF00'});
});
去試試