2010-07-07 92 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來設置事件處理程序。