2010-07-07 89 views
0

我想在JavaScript中设置一个事件,但实际上并不工作。我很确定我也是这样做的。用DOM设置事件javascript

// in index.htm: 
function foo() { 
    // Load gets code from a php file via ajax 
    document.getElementById('div').innerHTML = load('phppage.php'); 
    document.getElementById('element').onClick = func; 
} 

// in lib.js: 
function func() { alert('Working'); } 

不幸的是......它从不提醒'工作'。我有谷歌浏览器,我甚至检查了开发人员工具中的元素,发现onClick属性实际上是func() ......我不明白为什么这不行。

我确实广泛使用ajax。元素“元素”实际上装有阿贾克斯

回答

4

尝试将其更改为“onclick”事件

+0

javascript函数名称区分大小写,因此+1! – 2010-07-07 17:02:46

+0

谢谢!这工作。 – Alan 2010-07-07 17:03:52

+0

@Mike它不是函数名称,请参阅我的答案... – galambalazs 2010-07-07 17:05:42

0

我想的onclick属性是小写。 但是,您应该使用事件附加方法。

element.addEventListener('click',func); 

(和的attachEvent的Internet Explorer)

-2

当然,也有大量的框架存在,来处理这样的跨浏览器的问题,如:

ExtJS

JQuery

+1

喜欢改变角色?哦,我相信它们中有很多......它与浏览器无关。区分大小写是该语言的一部分。 – galambalazs 2010-07-07 17:09:25

+0

你在说什么?每个人都知道,使用内联处理程序是不好的做法(http://robertnyman.com/2008/11/20/why-inline-css-and-javascript-code-is-such-a-bad-thing/) Heck ,你甚至提倡同样的东西: http://stackoverflow.com/questions/3142710/inline-styles-vs-classes/3142741#3142741 框架抽象了事件模型的差异,例如共享/单例事件对象或addEventListener和attachEvent之间的区别。似乎你有东西卡在你身后;) – 2010-07-08 01:12:17

1

HTML属性不是,而是javascript属性区分大小写。您需要使用onclick来设置事件处理程序。