javascript document.getElementById不工作

javascript document.getElementById不工作,javascript,getelementbyid,Javascript,Getelementbyid,你知道为什么这个简单的javascript不起作用吗?它正在工作 Firefox、Chrome不适用于IE Safari和Opera。 你能帮助我吗? 似乎document.getElementById在IE、Safari和Opera中存在一些问题。为什么? <form name="formular" action="test.php"> <select id="testMenu" name="testMenu" onChange="testOptions()

你知道为什么这个简单的javascript不起作用吗?它正在工作 Firefox、Chrome不适用于IE Safari和Opera。 你能帮助我吗? 似乎document.getElementById在IE、Safari和Opera中存在一些问题。为什么?

   <form name="formular" action="test.php">
      <select id="testMenu" name="testMenu" onChange="testOptions()">
        <option id="X2" value="2">2</option>
        <option id="X3" value="3" selected>3</option>
        <option id="X4" value="4">4</option>                        
      </select>     

      <select id="nextMenu" name="nextMenu">
        <option id="B1" value="1">B1</option>
        <option id="B2" value="2">B2</option>
      </select>
   </form>
     <script type="text/javascript">
       var choose_option =3;

       function testOptions() {
       var choose_option = document.getElementById("testMenu").selectedIndex+2;

       if (choose_option == 4){
          document.getElementById("B2").style.display="none";
        }else{
          document.getElementById("B2").style.display="block";  
        }
    }   
    </script>

2.
3.
4.
地下一层
地下二层
var选择_选项=3;
函数testOptions(){
var choose_option=document.getElementById(“testMenu”)。selectedIndex+2;
如果(选择_选项==4){
document.getElementById(“B2”).style.display=“无”;
}否则{
document.getElementById(“B2”).style.display=“block”;
}
}   

你为什么认为
getElementById
不起作用?问题更多的是无法将
显示:none
应用于
元素。最简单的修复方法可能是为其设置
禁用

document.getElementById("B2").disabled = choose_option === 4;
如果您希望它真的消失,可以通过移除它来实现:

var nextMenu = document.getElementById("nextMenu");
var b2 = document.getElementById("B2");

function testOptions() {
    var choose_option = document.getElementById("testMenu").selectedIndex + 2;

    if (choose_option === 4) {
        if (b2.parentNode) {
            b2.parentNode.removeChild(b2);
        }
    } else if (!b2.parentNode) {
        nextMenu.appendChild(b2);
    }
}

会发生什么?控制台中有错误吗?没有错误…这很奇怪,但让我们尝试一下-当您在第一个选择中选择数字4时,您应该在第二个选择中只有一个选项正确调试。您应该先测试一下
document.getElementById(“B2”)
是否与使用
.style.display=value.
分开工作,这将向您显示
document.getElementById(“B2”)
是否工作正常。这是正确的。我很确定用CSS隐藏
s
是不可能的。你必须删除它们并适当添加它们。谢谢,禁用是个好主意,但不是在这种情况下…我需要隐藏,而不仅仅是禁用…我必须尝试使用删除,但是隐藏-删除更容易,如果无法通过隐藏Minitech来解决问题,我会使用它。好的,我尝试过删除,但除了IE之外,它已经开始在每个浏览器中工作。你知道为什么吗?你对IE也有什么解决方案吗?@jvku:哪个版本的IE?控制台中是否有任何错误?尝试记录
document.getElementById(“测试菜单”)的值。选择索引
。IE 8.0没有控制台问题,让我们尝试IE。。。它起作用了吗?