0

私は2つの質問があります:1 - 入力値を持つ関数の場合、間隔をどのように設定できますかこれをテストしますが、現在は機能しています

<script>
function bn(x)
{
alert (x);
}
setInterval("bn(x)",3000);
</script>
<a href="#" onclick="bn(1);">bn 1</a><br>

動作してsetInterval("bn()",3000);いるが、「1」の代わりに「未定義」を表示

2-どのように2つの値の繰り返しを設定するこの関数を繰り返すとき、私は新しい値を試し、2つの値の繰り返しを機能させます

<script>
function bn(x)
{
alert (x);
}
setInterval("bn(x)",3000);
</script>
<a href="#" onclick="bn(1);">bn 1</a><br>
<a href="#" onclick="bn(2);">bn 2</a>
4

2 に答える 2

4

わかりました、私はあなたが何を望んでいるのか理解していると思います。下記参照:

最初の質問については、現在行っていることは明らかに機能しません (おそらくわかっているように)。これを修正するには、無名関数を使用する必要があります。以下の例:

<script>
var x = 1;

function bn(x)
{
    alert (x);
}
setInterval(function() {
    bn(x);
},3000);

</script>

<a href="#" onclick="x = 1;">bn 1</a><br>
<a href="#" onclick="x = 2;">bn 2</a>

2 番目の質問については、上記の最後の 2 行を参照してください。関数はすでに実行されているため、制御する必要があるのは の値xだけです。そのスコープを、それが使用されている関数に固有のものではなく、一般的なものとして設定してください。

onclick イベントは の値を設定しますx。コードが機能することを確認しました。値が に設定されている場合2、アラートは2などを表示します。

于 2012-05-21T03:38:07.450 に答える
0
<script>
function bn(x) {
  alert(x);
}
setInterval(function() { bn(1) }, 3000)
</script>

bn3秒ごとに呼び出して値を渡します1

以前に未定義になった理由はx、(投稿したコードで) 宣言されていないものを渡そうとしたためです。

関数に渡すパラメーターは、関数の引数と同じ名前である必要はありません。

<script>
var some_var = 1;
function bn(x) {
   alert(x);
}
setInterval(function() { bn(some_var) }, 3000);
</script>

前の例と同じことを行いますが、スクリプトの他の場所で some_var を変更して、その更新された値を bn に渡すことができます。

于 2012-05-21T03:45:07.447 に答える