次の問題があります。arr には 2 つの要素しかありません。次のループは、彼の体を 3 回実行しようとします。
var selectHTML = "";
for (var i = 0; i< arr.length; i++) {
selectHTML += '<option value="' + arr[i].id + '">' + arr[i].name + '</option>';
}
次のループは、予想どおり、彼の体を 2 回だけ実行しようとします。
var selectHTML = "";
for (var i = 0; i< arr.length; i++) {
alert(i);
selectHTML += '<option value="' + arr[i].id + '">' + arr[i].name + '</option>';
}
なぜですか (Firefox 14.0.1 でテスト済み)?
更新: カウンタのインクリメントの後のセミコロンで申し訳ありません。これはタイプミスです。しかし、コードはそれなしではまだ機能しません。
更新: OK、このコードは簡略化されました。コード全体:
var selectHTML = "";
timeSheet.steps = [ { name:"Leave as is", id:-1}, { name:"Approved", id:2} ];
for (var counter = 0; counter < timeSheet.steps.length; counter++) {
selectHTML += '<option value="' + timeSheet.steps[counter].id + '">' + timeSheet.steps[counter].name + '</option>';
}
Firebug では、timeSheet.steps.length が 2 に等しいことがわかります。ちなみに、"alert(i)" を配置する代わりに、コメントを追加して body を 2 回実行しました。魔法...