onclick函数执行时不需要点击任何javascript

时间:2012-12-10 23:15:15

标签: javascript html javascript-events onclick

我正在使用一些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)" />

这允许用户再次选择正确的选项。然后我想用新值替换radiobuttons,因此当用户选择任何选项时,DIV将替换“radio”选项并显示选择的值(YES或NO),就像它在开头一样。

此时一切都很完美。

这是我的问题:

我希望DIV将onclick()作为开始onclick="test()",所以我是通过javascript以这种方式为其提供属性:div.onclick = function() { test();};。即使用户未单击div,也会执行函数test()。它会立即执行这两个功能,并且不会等到它点击它。

有谁知道如何使功能等到有任何点击?我是否错误地给了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(); };
}

2 个答案:

答案 0 :(得分:2)

是的,您的问题在于div.onclick =,您实际上是在为div分配点击操作!这将在您的页面加载时执行。

你想要的是分配一个这样的事件监听器。

div.addEventListener('click' function(){});

答案 1 :(得分:0)

我遇到了同样的问题,我找到了这个页面。我检查了addEventListener的规范,发现我输入了一对过多的括号。


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

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

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