2017-01-09 69 views
-2

我想使用一小段Java脚本来显示或不显示带有选项的字段,具体取决于其中一个复选框被检查。 它适用于所有浏览器,但不适用于低于Edge的IE浏览器。 这可能是“.checked”方法的问题,还是我必须在旧的IE中使用另一个语法“if-else-loop?”java脚本:“if-block在低于边缘的IE中不起作用”

谢谢,快速回答!更确切的说:我不需要为IE开发< 9.当我在if语句之外使用“.getElementsByClassName”时,代码在IE9到11之间工作。问题必须与else-if或.checked - 方法。我尝试了一些其他的语法变体,但我didn`t得到它的工作。对于正确的语法的几点思考像“.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

的[getElementsByClassName方法()不老的互联网探索者像IE6,IE7,IE8工作]可能的复制(HTTP:/ /stackoverflow.com/questions/6584635/getelementsbyclassname-doesnt-work-in-old-internet-explorers-like-ie6-ie7-i) – krillgar

+0

不确定附加这样的事件是否适用于IE。尝试'attachEvent' https://msdn.microsoft.com/en-us/library/ms536343(v=vs.85).aspx –

+0

你能否分享你的相关'html'片段? –

回答

0

有没有问题if-else块在这里。

是使用了getElementsByClassName方法,它不被旧的互联网探索者像IE6,IE7的支持,IE8

看看这个,你可以找到关于它的详细讨论出现的问题。

getElementsByClassName() doesn't work in old Internet Explorers like IE6, IE7, IE8

UPDATE

这是我尝试在IE> 8做,它的工作。

看看,

此外,请确保您已设置复选框的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"; 
 
    } 
 
}
<input type='checkbox' id="opt_18_0"> 
 
<input type='text' class="fieldset_file2"> 
 
<button onclick="oneortwo()">Check</button>

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

这里是一个跨浏览器的链接 - 测试

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

+0

OP提到他们的代码无法在IE下的边缘,没有提到它失败*仅*在IE浏览器<9 –

+0

问题应该是这个或IE浏览器支持getElementsByClassName从IE9 http://caniuse.com/# feat = getelementsbyclassname –

+0

这显然是错误的:https://msdn.microsoft.com/en-us/library/ff975198(v=vs.85).aspx –

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;