SelectAll不调用事件处理程序
SelectAll does not call Event Handler
请参阅下面的JavaScript:
<html>
<head><title></title></head>
<body>
<script type = "text/javascript">
function Test()
{
alert('got here');
}
function SelectAll() {
var frm = document.forms[0];
for (i = 0; i < frm.elements.length; i++) {
frm.elements[i].checked=true;
}
}
</script>
<form>
<input type="checkbox" name="Test1" onClick="Test()"/>
<input type="checkbox" name="Test2" onClick="Test()"/>
<input type="checkbox" name="Test3" onClick="Test()"/>
<input type="checkbox" name="Test4" onClick="SelectAll()"/>
</form>
</body>
</html>
如果我单击Test1, Test2或Test3,则会出现警告框。当我单击Test4时,我希望警报出现三次(Test1一次;一次用于Test2,一次用于Test3)。然而,这并没有发生。根本不调用事件处理程序。为什么会这样?
如何修改HTML,使事件处理程序被调用三次
您还需要触发onclick
:
frm.elements[i].onclick();
为了避免click的最后一个元素,您需要通过1
减少for循环的长度,因此最终代码应该是:
function SelectAll() {
var frm = document.forms[0];
for (i = 0; i < ( frm.elements.length - 1 ); i++) {
frm.elements[i].checked=true;
frm.elements[i].onclick();
}
}
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 正在将事件处理程序添加到不存在的类
- 在循环中附加事件处理程序时出现浏览器性能问题
- 在同一个javascript事件处理程序中调用不同的函数
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 检查事件处理程序参数
- 实现延迟的jquery更改事件处理程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- 带有参数的Javascript事件处理程序
- Jquery事件处理程序仅适用于匿名函数
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 如何在jQuery事件处理程序中存储和重用超时
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 异步处理所有事件处理程序的方法
- jsplumb中的Click事件处理程序丢失“;这个“;对象
- 构造函数中的事件处理程序与构造函数外的事件处理函数的行为不同
- 如何在事件处理程序的回调中防止Default