1
function init(){
var panel = document.getElementById("panel");
var i;

var week = ["monday","tuesday","wednesday","thursday","friday"];
var weekend = ["saturday","sunday"];

panel.innerHTML+="weekdays: "+ week;
panel.innerHTML+="<hr>weekend days: "+ weekend;

for(i=0; i<weekend.length; i++)
{
    week[week.length]=weekend[i];
}

panel.innerHTML+="<hr>increased with weekend days: "+week;

week-=2;

panel.innerHTML+="<hr>reduced back to weekdays: "+week;
}
window.onload=init;

これは、別の html ファイルからロードされるメインの js コードです。すべてが最後までうまく機能しています。最後の出力は「平日に戻す: 月曜日、火曜日、水曜日、木曜日、金曜日」である必要がありますが、これは「平日に戻す: NaN」です。このエラーはどういう意味ですか?どうすれば修正できますか?

4

4 に答える 4

10

配列自体ではなく、配列の長さを2だけ短くする必要があります。

week.length -= 2;

例:

var week = [1,2,3,4,5,6,7];
week.length -= 2;

console.log(week);
//[1, 2, 3, 4, 5]
于 2012-07-05T09:24:31.300 に答える
5

変更する必要があるかもしれません:

week-=2;

に:

week.splice(-2);

編集(@Esailjaに感謝):

splice は削除された要素を返すため、結果を配列に代入せずに splice メソッドを呼び出すだけで済みます。

week.splice(-2);
于 2012-07-05T09:29:42.563 に答える
2

配列から数値を減算して、意味のある結果を期待することはできません。それはタイプの混合であり、もちろん動作は奇妙になります。

週末の日を取得するにpop()は、配列オブジェクトのメソッドを使用します。

于 2012-07-05T09:24:33.547 に答える
0
function init(){
var panel = document.getElementById("panel");
var i;

var week = ["monday","tuesday","wednesday","thursday","friday"];
var weekend = ["saturday","sunday"];

panel.innerHTML+="weekdays: "+ week;
panel.innerHTML+="<hr>weekend days: "+ weekend;

for(i=0; i<weekend.length; i++)
{
    week[week.length]=weekend[i];
}

panel.innerHTML+="<hr>increased with weekend days: "+week;

week.length -= 2;

panel.innerHTML+="<hr>reduced back to weekdays: "+week;
}
window.onload=init;

.lengthしかし、それはセッターに使用する良い方法ではありません!

于 2012-07-05T09:51:57.910 に答える