1

私はいくつかの JavaScript および Ajax 関数を使用しています。より明確にするために自分自身を説明しながら、いくつかのコードを配置します。

私はこの要素を持っています:<div id="divTest" onclick="test()">YES</div>

ユーザーが DIV をクリックすると、関数は "YES" を次のように置き換えます。

YES <input type="radio" name="testing" value="YES" onclick="test_2(this.value)" checked /> 
NO <input type="radio" name="testing" value="NO" onclick="test_2(this.value)" />

これにより、ユーザーは正しいオプションを再度選択できます。次に、ラジオボタンを新しい値に置き換えたいので、ユーザーがオプションを選択すると、DIV は「ラジオ」オプションを置き換え、選択された値 (YES または NO) を最初と同じように表示します。

この時点で、すべてが完璧に機能します。

これが私の問題です:

DIVonclick()の先頭に を付けたいonclick="test()"ので、JavaScript から次のようにプロパティを指定しますdiv.onclick = function() { test();};test()ユーザーが div をクリックしなくても、関数は実行されます。両方の機能をすぐに実行し、クリックされるまで待機しません。

クリックがあるまで関数を待機させる方法を知っている人はいますか? onclickプロパティを間違って指定していますか?

私は自分自身を明確にしたことを願っています。

関数は次のとおりです。

function test() {
   var div = document.getElementById("divTest");
   //I DO NOT INCLUDE THE AJAX CODE BUT THE RESPONSE INCLUDE THE RADIO BUTTONS METIONED ABOVE
   div.innerHTML = xml.responseText();
}

function test_2(newValue) {
   div = document.getElementById("newValue");
   div.innerHTML = newValue;
   div.onclick = function() { test(); };
}
4

2 に答える 2

2

はい、あなたの問題は、div.onclick =実際にdivにクリックアクションを割り当てていることです! ページの読み込み時に実行されます。

あなたが望むのは、そのようにイベントリスナーを割り当てることです。

div.addEventListener('click' function(){});
于 2012-12-10T23:19:56.280 に答える
1

私は同じ問題を抱えていて、このページを見つけました。addEventListener の仕様を確認したところ、過剰な括弧のペアを入力したことがわかりました。


これを行うには 2 つの方法があり
ます。
2.ブラケットを追加することはできません。('click', myfunction) を使用するだけです。

パラメーターを使用する場合は、関数を無名関数にラップします。このように: div.addEventListener('click', function(){myfunction(e){}})。

少し遅いですが、読んで問題を解決できることを願っています。

于 2016-01-31T09:04:10.833 に答える