JavaScript动态onClick问题

时间:2010-07-06 21:06:28

标签: javascript dom

当网页上的某个内容发生变化时,我试图给按钮一个onclick事件。我尝试过很多不同的方式,但都没有。我做错了什么?

以下是我的尝试。

document.getElementById(subDiv).onclick = function() { alert('Error. There is an error on the the page. Please correct that then submit the page'); };


document.getElementById(subDiv).onclick = "alert('Error. There is an error on the the page. Please correct that then submit the page');";


function redErrorAlert()
{
    alert('Error. There is an error on the the page. Please correct that then submit the page');
}
document.getElementById(subDiv).onclick = redErrorAlert;



document.getElementById(subDiv).setAttribute('onclick',redErrorAlert(), false);



document.getElementById(subDiv).setAttribute('onclick','redErrorAlert()', false);

注意:subDiv是一个包含元素id的变量。

4 个答案:

答案 0 :(得分:2)

在对它进行查询之前,您需要等待创建DOM树。

确保这一切都发生在 DOM树之后创建的上下文中:

window.onload = function() {
    document.getElementById(subDiv).onclick = function() { alert('Error. There is an error on the the page. Please correct that then submit the page'); };
};

答案 1 :(得分:1)

document.getElementById()接受一个字符串,其中包含您要查找的元素的ID。假设您正在寻找id为'subDiv'的元素,您应该调用document.getElementById('subDiv')。

(你的代码中的变量subDiv也可能是一个包含ID的字符串,但是因为你没有提到它我假设它没有。)

编辑:如果你要使用virstulte建议使用jQuery,你需要在document.ready事件中附加一个函数,以确保在你的时候构建了DOM。代码运行。例如:

$(document).ready(function() {
    $("#subDiv").click(function() { alert("Test!"); });
});

答案 2 :(得分:0)

这听起来像jQuery领域。一旦你了解了jQuery的细节,这样的事情很容易照顾,你会发现自己编写的JavaScript要少得多。

首先,从http://jquery.com/

获取jQuery

然后将其放入代码中以绑定事件:

$('#idOfElementToBindClickEvent').click(function(){
  alert('Error.');
});

jQuery基本上提供了一种使用类似CSS的选择器来操作元素的方法。

答案 3 :(得分:0)

document.getElementById(subDiv).onclick = alert('Error. There is an error on the the page. Please correct that then submit the page');

function redAlert() {
    alert('Error. There is an error on the the page. Please correct that then submit the page');
}

document.getElementById(subDiv).onclick = redAlert();

第一种情况:您需要调用该函数,并且已经分配了一个字符串

第二种情况:你已经分配了一个函数而你没有调用这个函数