我想使用一小段Java脚本来显示或不显示带有选项的一个字段,具体取决于是否选中了一个或另一个复选框。 它适用于每个浏览器,但不适用于低于Edge的IE浏览器。 这可能是“.checked”-method“的问题”还是我必须在旧的IE中使用另一个语法来处理“if-else-loop?”
谢谢你的快速解答!更确切地说:我不需要为IE< 9开发。当我在if语句之外使用“.getElementsByClassName”时,代码在IE9上运行到11.问题必须是else-if或.checked-method。我尝试了一些其他语法变体,但我没有让它工作。一些关于正确语法的想法,如“.checked == true”左右?
function oneortwo() {
if(document.getElementById("opt_18_0").checked) {
document.getElementsByClassName("fieldset_file2")[0].style.display = "none";
} else {
document.getElementsByClassName("fieldset_file2")[0].style.display = "block";
}
}
opt_18_0.onclick=oneortwo;
opt_18_1.onclick=oneortwo;
答案 0 :(得分:0)
这里的if-else块没有问题。
这是使用getElementsByClassName
方法的问题,IE6,IE7,IE8等旧版Internet Explorer不支持此方法
看看这个,你可以在那里找到关于它的详细讨论。
getElementsByClassName() doesn't work in old Internet Explorers like IE6, IE7, IE8
<强>更新强>
以下是我在IE&gt; 8中尝试做的事情,它起作用了。
看看,
另外,请确保您已将{ID}的ID设置为opt_18_0
function oneortwo() {
if(document.getElementById("opt_18_0").checked) {
document.getElementsByClassName("fieldset_file2")[0].style.display = "none";
} else {
document.getElementsByClassName("fieldset_file2")[0].style.display = "block";
}
}
&#13;
<input type='checkbox' id="opt_18_0">
<input type='text' class="fieldset_file2">
<button onclick="oneortwo()">Check</button>
&#13;
Codepen链接http://codepen.io/nadirlaskar/pen/VPvoQz
以下是跨浏览器测试的链接
答案 1 :(得分:0)
解决方案(使代码也在IE 9到11中工作)是将函数设置为变量:
var reference_to_oneortwo = function oneortwo() {
if(document.getElementById("opt_18_0").checked)
{
document.getElementsByClassName("fieldset_file2")[0].style.display = "none";
}
else
{
document.getElementsByClassName("fieldset_file2")[0].style.display = "block";
}
}
以触发该功能:
document.getElementById("opt_18_0").addEventListener('click', reference_to_oneortwo , false);
document.getElementById("opt_18_1").addEventListener('click', reference_to_oneortwo , false);
而不是:
opt_18_0.onclick=oneortwo;
opt_18_1.onclick=oneortwo;