1

ループを通過した後に変数の結果を取得する必要があります。変数をグローバル変数にして値を取得しようとしましたが、値は変わりません。これはまったく可能ですか?

これが私のコードです。変数tの値を取得しようとしています:

var t;

function processSplashbacks() {
    var splashbacks = document.worktopForm.splashbacks.value;   
    for (t = 1; t <= splashbacks; t++){
        var splashbackInfo = '<label> Length: </label><input type="text" id="length' + t + '" value="0"/>(cm)<br /><label> Width: </label><input type="text" name="width' + t + '" value="0"/>(cm)<br /><br />';
        document.getElementById("splashWidLen").innerHTML += 'Splashback ' + t + ' dimensions<br />' + splashbackInfo;
    }
}

function deleteSplashbacks() {
    document.getElementById("splashWidLen").innerHTML = "";
}

console.log(t);

ありがとう!

4

4 に答える 4

4

試す:

<input type="button" value="Add Splashbacks" onClick="processSplashbacks(); console.log(t);"/>

私が見たところ、あなたはconsole.log(t)1 か所だけに電話をかけているようです。ユーザーがボタンをクリックする前に、ページが読み込まれたときにのみログに記録されます。console.log(t);関数呼び出しの後に再度呼び出す必要があります。

とはいえ、グローバル変数はおそらく最善の解決策ではありません。その関数を作成してからreturn t;、次のように戻り値をログに記録することをお勧めします。

<input type="button" value="Add Splashbacks" onClick="console.log(processSplashbacks());"/>
于 2012-09-27T15:57:07.660 に答える
1

では、変数をグローバル変数として設定しようとしているだけですか?

これはうまくいくはずです:window.t = t; それをループの中に入れてインクリメントするだけです。

しかし、これが実際にどれほど役立つかはわかりません。ループ制御変数にアクセスできるようにしてよろしいですか?

于 2012-09-27T15:56:46.447 に答える
1

コード内の4つのステートメントは次のとおりです。

  • tの宣言
  • 2つの関数の宣言
  • 印刷t

これらはすべてページの読み込み時に実行されますが、関数を宣言しても実行されません...関数が実行されるたびに、console.log(t)ステートメントの後に実行されます。

今これを書くと:

onClick="processSplashbacks(); console.log(t);"

その後、それは動作するはずです

于 2012-09-27T15:57:28.917 に答える
1

関数が定義され、関数が実行される前に変数をコンソールに記録します。代わりに、独自の t を定義して返すように関数を書き直して、onclick ハンドラーがそれをログに表示できるようにします。

于 2012-09-27T15:59:50.030 に答える