JavaScript中的onclick事件

5

我对JavaScript非常陌生。我知道可以将onclick=""事件添加到HTML元素中,但是在JavaScript本身中是否有可能声明当某人单击x元素时触发一个事件?

3个回答

5
<input id="myElement" type="button" value="Click me!" />
<script type="text/javascript">
    document.getElementById('myElement').onclick = function () {
        alert('Hello, world!');
    }
</script>

确保您在元素已存在时运行此代码(脚本放在底部),或在DOM准备好后运行。 (您可以使用window.onload来实现,但您可能希望从一开始就使用jQuery,以便获得一个神奇的DOM准备函数,等等。 onload有一些缺点,比如等待图像加载。)


可能需要添加一条注释,说明脚本应该运行的前提条件,即元素存在于DOM中。 - Russ Cam
好的发现 - 顺序交换,扩展。 - Matchu
1
+1 - 这里有一个仅限于JS的domReady实现 - http://books.google.com/books?id=GgJN2CC_2s4C&lpg=PP1&dq=pro%20javascript%20techniques&pg=PA89#v=onepage&q=&f=false 参见第5-12个清单 :) - Russ Cam
你可能还想添加一些代码来确保已分配给 onclick 的函数不会被分配新的事件处理程序覆盖...也许可以看看Dean Edward的addEvent库?-http://dean.edwards.name/weblog/2005/10/add-event/或者它的变体。 - Russ Cam
如果真有必要的话,我会让楼主来处理它的 - 谢谢! :) - Matchu
我真的不确定为什么人们支持避免使用 jQuery,而是依赖于 getElementById 来获取 DOM 中的元素。因为这种从 DOM 中获取单个元素的方法存在许多已知问题,特别是由于上面提到的引用 FORM 元素的格式被认为不是一个好习惯,所以应该要避免使用:http://www.javascripttoolbox.com/bestpractices/ - Keith Adler

1

可能最好的方法是事件监听器。

<button id="x">click on me</button>
<script src="main.js">
    const button = 
    document.getElementById("x");
       
    button.addEventListener("click" () => {
    alert("hello world")
})
    /*
    it might not be as good in small 
    projects, but in large ones, this 
    saves a ton of time.
    */
</script>

1

3
除非楼主想做一些复杂的事情,否则我认为使用jQuery会过于繁琐。 - Javier
2
Jquery 绝对不会过度,因为它将在很大程度上解决多浏览器问题。 - MLefrancois
getElementById 在所有浏览器中的工作方式都不同。例如,在 IE8 中它是区分大小写的,在早期版本中它不符合 W3C 标准并且存在各种已知问题。然而,不仅仅是 IE 有问题。你的 less is more 的说法是有道理的,但 jQuery 是一个确保跨用户代理兼容性的层,值得利用。 - Keith Adler
1
不显眼的JavaScript。我同意,这种情况下并不一定需要jQuery。 - Russ Cam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接