javascript动态内容与选择长运行脚本

javascript dynamic content with select long running script

本文关键字:运行 脚本 选择 动态 javascript      更新时间:2023-09-26

基本上一直在尝试弄清楚一些javascript的东西,所以做了几个div和一个选择,所以取决于所选的选项,取决于显示/隐藏的div。

它似乎工作正常,在加载后隐藏除第一个div之外的所有div,然后当选择第二个选项时,它显示第二个div,通过附加一个类来隐藏第一个div。

不过,当我将选项改回第一个div时,它会创建一个长时间运行的脚本,阻塞所有内容,我不知道长时间运行脚本来自哪里。

如有任何建议,不胜感激。

这是代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <style>
      .itemCont.show{
        display:block;
      }
      .itemCont.hide{
        display:none;
      }
    </style>
  </head>
  <body onload="sortDivs();">
    <select name="options" id="opts" onchange="optSelect(this);">
      <option value="0">item</option>
      <option value="1">another</option>
    </select>
    <div class="output">
      <div class="itemCont show" id="div0">
        <h1>1</h1>
      </div>
      <div class="itemCont" id="div1">
        <h1>2</h1>
      </div>
    </div>
  </body>
  <script async="async" ype="text/javascript">
  function sortDivs(){
    var divs = document.getElementsByClassName('itemCont');
    for( var i = 0; i < divs.length; i++ ){
      if(i>0){
        divs[i].className += ' hide';
      }
    }
  }
  function optSelect(opt){
    var val = opt.value;
    var divs = document.getElementsByClassName('itemCont');
    var divActive = document.getElementsByClassName("itemCont show");
    divActive[0].className = divActive[0].className.replace(/'bshow'b/,'hide');
    for ( var i = 0; i < divs.length; i++ ) {
      if(i = val){
        divs[i].className = divs[i].className.replace(/'bhide'b/,'show');
      }
    }
  }
  </script>
</html>

您有一个打字错误=应该是==

for ( var i = 0; i < divs.length; i++ ) {
    if(i == val){
        divs[i].className = divs[i].className.replace(/'bhide'b/,'show');
    }
}

我建议使用jQuery(toggle)来处理这类事情:)