0

for ループが実行されないのはなぜですか?

  • エラーコンソールが空です
  • 関数countfilesは整数を返します
  • parseInt(countfiles())あまりにも動作しません

ここに私のコード:

function set_default_value() {
    var element = document.getElementsByName('fields');
    for (var i = countfields(); i < element.length; ++i) {
        element[i].value = "default";
    }
}

なぜ実行されないのですか?

編集:

  • Countfields が element.length よりも小さい
  • 関数は実行中です
  • Countfield は、0、1、2、3 などの数値を返します。

ここに関数がありますcountfields

function countfields() {
    var field_counter = 0;
    for (var i = 0; i < 50; i++) {
        if (typeof document.getElementsByName('other_fields')[i] != "undefined") {
        var field_counter = field_counter + 1; 
        }
    }
    return field_counter; 
}
4

3 に答える 3

1

@varunachar は、彼のコメントの 1 つでこの問題に触れました。

countfields によって返される数は、element.length よりも大きくなる可能性があります

この行で:

for (var i = countfields(); i < element.length; ++i)

i < element.lengthこれは、 「が 未満である限り、何かを行うielement.length」 と読みます。または、countfields()が等しいかそれより大きい場合、何も起こりません。

1 other_fields: http://jsfiddle.net/D5ZHV/は動作します
6 other_fields: http://jsfiddle.net/Ay6BN/は動作しませ

于 2013-02-11T18:21:49.760 に答える
0

変化する

        var field_counter = field_counter + 1; 

        field_counter = field_counter + 1; 

countfields()機能中。field_counter間違っているforループ内で宣言しています

于 2013-02-11T18:05:23.737 に答える
0
function countfields() {
    var field_counter = 0;
    for(var i = 0; i < 50; i++) {
        if(typeof document.getElementsByName('other_fields')[i] != "undefined") {
        var field_counter = field_counter + 1; } }
    return field_counter; }

var は常に変数のスコープを定義します。ifvar field_counterの内部では、if ステートメント内にスコープを持つ変数が作成されます。

あなたは次のように書くべきです

field_counter = field_counter + 1; 

countfields() をテストすると、常に 0 が返されます。

また、やってみてくださいconsole.log(elements)

于 2013-02-11T18:08:36.370 に答える