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 会替换“单选”选项并显示选择的值(是或否),就像它在开始时一样。

在这一点上,一切都很完美。

这是我的问题:

我希望onclick()DIVonclick="test()"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 的规范,发现我输入了过多的括号。


有两种方法可以做到这一点:
1.使用匿名函数(即没有名称,定义及时使用),如上面的答案。
2.不能加括号。只需使用 ('click', myfunction)。

如果要使用参数,请将函数包装成匿名函数。像这样:div.addEventListener('click', function(){myfunction(e){}})。

有点晚了,希望您能阅读并解决您的问题。

于 2016-01-31T09:04:10.833 回答