以下javascript在IE中工作正常但在Mozilla中没有。 我们有一个标题复选框,onClick,页面中的所有其他复选框都被选中/取消选中。有人可以帮忙吗?
<script language="javascript">
function SelectAll() {
var frm = document.forms[0];
var j = frm.elements.length;
var checkAll = document.getElementById("checkAll");
var checkBoxCount = 0;
if(checkAll.checked == true) {
var i = 0;
while(i != j) {
if (frm.elements[i].type == "checkbox") {
frm.elements[i].checked = true;
checkBoxCount++;
}
i++;
}
var chkAll = document.getElementById("checkAll");
chkAll.checked = true;
} else {
var i = 0;
while(i != j) {
if (frm.elements[i].type == "checkbox") {
frm.elements[i].checked = false;
}
i++;
}
var unchkAll = document.getElementById("checkAll");
unchkAll.checked = false;
}
}
答案 0 :(得分:3)
好的,这是一个更好的方法。在您的HTML中,将您的复选框设置为:
<input type="checkbox" onclick="selectAll(this)" />
然后你的Javascript:
function selectAll(checkbox) {
var form = checkbox.form;
for (var i = 0, l = form.elements.length; i < l; ++i) {
if (form.elements[i].type == 'checkbox') {
form.elements[i].checked = checkbox.checked;
}
}
}
这里是您测试的:http://jsbin.com/idadi
如果这是进入XSLT(无论出于何种原因),那么确保<
没有填充它的最简单方法就是使它成为CDATA,就像这样
<someElement><![CDATA[
function selectAll() {
// as above
}
]]></someElement>
答案 1 :(得分:0)
您可以使用与此类似的功能替换您的功能。这是一个适用于Firefox的 Working Demo 。将 / edit 添加到网址以查看代码
function SelectAll() {
var frm = document.forms[0];
var j = frm.getElementsByTagName('input');
var checkAll = document.getElementById("checkAll");
for (var i=0; i < j.length; i++) {
if (j[i].type == "checkbox") {
j[i].checked = checkAll.checked;
}
}
}
修改强>
如果您需要避免在代码中使用<
符号,可以像这样重写(我也整理了其他一些代码)。
function SelectAll() {
var elements = document.forms[0].elements;
var i = elements.length;
var checkAll = document.getElementById("checkAll");
while (i--) {
if (elements[i].type === "checkbox")
elements[i].checked = checkAll.checked;
}
}
答案 2 :(得分:0)
我将您的代码简化为:
function SelectAll() {
var elements = document.forms[0].elements;
var check = document.getElementById("checkAll").checked;
for (var i = 0; i < elements.length; i++) {
if (elements[i].type == "checkbox") {
elements[i].checked = check;
}
}
}
我在Firefox中试过它,但它确实有效。
答案 3 :(得分:-1)