首先选择一个多下拉列表,将第二个下拉列表中的值删除最多7个下拉列表

时间:2012-05-10 14:49:23

标签: javascript

我在html中有7个下拉框。他们都会填充相同的数据。我想要做的是当第一个下拉列表被选中时,它将从下一个下拉列表中删除所选项目。所以,如果你有数据:A,B,C,D,E,F,G,H,我在一个下拉列表中,如果我在第一个下拉列表中选择B,那么在下一个下拉列表中它应该只显示A,C,D ,E,F,G,H,I等等最多7个下拉菜单。我不知道在JavaScript中处理这个问题的最佳方法是什么。示例代码:下面的代码不适用于IE7& IE8在我的电脑上,任何人都知道我必须做些什么改变来使用这段代码.. 提前感谢您的帮助

 function callSave(select) {

        var parent = select.parentNode;    

       var usedValues = {};    

      for (var i = 0; i < parent.children.length; ++i) {

        var s = parent.children[i];

      if (s.nodeName.toLowerCase() != 'select') {
           continue;
        }        

     if (s.value != '') {
         usedValues[ s.value ] = s;
      } 
  }    

   for (var i = 0; i < parent.children.length; ++i) {      
      var s = parent.children[i];        
      if (s.nodeName.toLowerCase() != 'select') {
          continue;
      }        

      for (var j = 0; j < s.children.length; ++j) {           
         var o = s.children[j];             
        if (o.nodeName.toLowerCase() != 'option') {
            continue;
        }            

         var p = o.value == '' ? undefined : usedValues[o.value];          
         if (p == undefined || p == s) {
             o.style.display = '';
         }          
         else {
             o.style.display = 'none';
         }
       }
    }
 }

HTML:
  <div>
      <select onChange="callSave(this)">
       <option></option>
       <option>A</option>
      <option>B</option>
       <option>C</option>
      <option>D</option>
      <option>E</option>
      <option>F</option>
      <option>G</option>
      <option>H</option>
   </select>
  <select onChange="callSave(this)">
       <option></option>
      <option>A</option>
      <option>B</option>
      <option>C</option>
      <option>D</option>
      <option>E</option>
      <option>F</option>
        <option>G</option>
       <option>H</option>
  </select>
   <select onChange="callSave(this)">
       <option></option>
       <option>A</option>
       <option>B</option>
      <option>C</option>
      <option>D</option>
       <option>E</option>
       <option>F</option>
      <option>G</option>
      <option>H</option>
   </select>
   <select onChange="callSave(this)">
      <option></option>
      <option>A</option>
      <option>B</option>
      <option>C</option>
      <option>D</option>
      <option>E</option>
      <option>F</option>
      <option>G</option>
      <option>H</option>
  </select>

0 个答案:

没有答案