Javascript 在 Internet Explorer 中切换

Javascript Toggle in Internet Explorer

本文关键字:Explorer Internet Javascript      更新时间:2024-05-18
function globalModelToggleClicked(modname)
{
 var state = this.checked ? true : false;
 var display = this.checked ? 'inline-block' : 'none';
 var inputs = document.getElementsByTagName('input');
 var input_l = inputs.length;
 // check uncheck inputs checkboxes
 while(input_l--)
 {
   var input = inputs[input_l];
   if(input.getAttribute('class') == modname)
   {
     input.checked = state;
   }
 }
 // show/ hide all colorings
 var main = document.getElementById('main');
 var divs = main.getElementsByTagName('div');
 var divs_l = divs.length;
 var regex = new RegExp(modname);
 while(divs_l--)
 {
   var div = divs[divs_l];
   if( regex.test(div.getAttribute('class')) 
    && ( /hit/.test(div.getAttribute('class'))
         || /seqBorder/.test(div.getAttribute('class')) 
       )
     )
   {
     div.style.display = display;
   }
 }
}


function localModelToggleClicked(modname)
{
  var display = this.checked ? 'inline-block' : 'none';
  // get parent fieldset
  var fieldset = this.parentNode;
  while(fieldset.nodeName != 'FIELDSET')
  {
    fieldset = fieldset.parentNode;
  }
  // show/ hide all colorings
  var divs = fieldset.getElementsByTagName('div');
  var divs_l = divs.length;
  var regex = new RegExp(modname);

  while(divs_l--)
  {
    var div = divs[divs_l];
    if( regex.test(div.getAttribute('class'))
    && ( /hit/.test(div.getAttribute('class'))
         || /seqBorder/.test(div.getAttribute('class'))
       )
      )
    {
        div.style.display = display;
    }
 }
} 

上述两个函数切换div 的可见性。 它们在除 IE(8( 以外的所有浏览器中都能完美运行,我不知道出了什么问题。 我尝试了调试器,它什么也没显示。 这些函数与其他函数一起位于外部脚本上,这些函数正在工作。 当我在函数内发出警报时,一切似乎都井井有条。 谁能帮忙?

问题出在getAttribute('class')显然IE不接受这一点。 所以我改用className。 这在所有浏览器中都能完美运行。