我正在使用一些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(); };
}
答案 0 :(得分:2)
是的,您的问题在于div.onclick =
,您实际上是在为div分配点击操作!这将在您的页面加载时执行。
你想要的是分配一个这样的事件监听器。
div.addEventListener('click' function(){});
答案 1 :(得分:0)
我遇到了同样的问题,我找到了这个页面。我检查了addEventListener的规范,发现我输入了一对过多的括号。
有两种方法可以做到这一点:
1.使用匿名函数(没有名称,及时定义使用),如上面的答案
2.你不能添加支架。只需使用('click',myfunction)。
如果要使用参数,请将函数包装到匿名函数中。像这样: div.addEventListener('click',function(){myfunction(e){}})。
有点晚了,希望你能阅读它并解决你的问题。