SelectAll不调用事件处理程序

SelectAll does not call Event Handler

本文关键字:程序 事件处理 调用 SelectAll      更新时间:2023-09-26

请参阅下面的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();
    }
}