java脚本:“if-block在低于Edge的IE中不起作用”

时间:2017-01-09 13:47:49

标签: javascript

我想使用一小段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;  

2 个答案:

答案 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

&#13;
&#13;
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;
&#13;
&#13;

Codepen链接http://codepen.io/nadirlaskar/pen/VPvoQz

以下是跨浏览器测试的链接

https://app.crossbrowsertesting.com/livetests/run?url=http%3A%2F%2Fcodepen.io%2Fnadirlaskar%2Ffull%2FVPvoQz

答案 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;