我在 HTML 中有一些复选框,设置如下:
<td nowrap width='25%'><label><input type='checkbox' name='chk[]' checked onChange="updateWindow('Label 1', this.checked)"> Label 1</label></td>
我还检查了所有/取消选中这些复选框的所有链接:
<td><a href="javascript:checkAll(0);">Unckeck all</a></td>
使用此代码:
function checkAll(checkValue) {
checkboxes = document.getElementsByName('chk[]');
for (var checkbox in checkboxes) {
checkbox.checked = checkValue;
activateEvent(checkbox, 'change');
}
}
开始的问题是像这样检查/取消选中复选框不会触发onChange
事件和相关方法。所以我手动触发它调用:
function activateEvent(item, actionShortName) {
if (document.createEventObject){ // dispatch for IE
item.fireEvent("on" + actionShortName);
}
else { // dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(actionShortName, true, true); // event type,bubbling,cancelable
item.dispatchEvent(evt);
}
}
这适用于 IE8 和一些旧版本的 Firefox。但是...在 Firefox 23 上,我有一个 javascript 错误告诉我:
"TypeError: item.dispatchEvent is not a function"
我该怎么做才能使它适用于所有浏览器?