javascript - 点击事件 : divs appear one at a time

标签 javascript html css events onclick

是否可以根据这个实际一个div一次做,也就是说onclick这两个事件都打不开,但是如果一个打开另一个被点击第一个自动关闭。顺便说一句,使用此代码的上下文不允许使用 Jquery。感谢您的帮助

<style type="text/css">
  .link{text-decoration:none; color:white;}

  .link:visited{color:white}

.row {
  display: flex; /* equal height of the children */
}

.col {
  flex: 1; /* additionally, equal width */
  
  padding: 1em;
  border: solid;
}

div {font-family:'Varela Round';
}
  
  .opener {
  background-color: #07183d;
  border: none;
  color: white;
  padding: 15px 32px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 16px;
  border: 1px white solid;
}

.benefits {
  background-color: #07183d;
  border: none;
  color: white;
  padding: 15px 32px;
  text-decoration: none;
  display: inline-block;
  font-size: 16px;
  width:300px;
}
</style>
<style type="text/css">}
a {
  text-decoration: none;
}
a:visited {
  text-decoration: none;
  color: white;
}
#upbutton {
  border: 1px dotted white;
}
</style>
<script>function show(id) { 
        if(document.getElementById('b'+id).style.display=='none') { 
            document.getElementById('b'+id).style.display='block'; 
        } 
        return false;
    } 
    function hide(id) { 
        if(document.getElementById('b'+id).style.display=='block') { 
            document.getElementById('b'+id).style.display='none'; 
        } 
        return false;
    }
</script>
<div class="row">
<div class="opener col"><a href="#1" name="1" onclick=" show('1');" class="link">SOCIETES: 400</a>

<div class="benefits" id="b1" style="display:none;">Part SBF 120 : 120<br />
Part Filiales +100M€: 280
<div id="upbutton"><a onclick=" hide('1');" >fermer</a></div>
</div>
</div>

<div class="opener col"><a href="#1" name="1" onclick=" show('2');" class="link" >CONTACTS: 25 400</a>

<div class="benefits col" id="b2" style="display:none;">Part CAC 40 : 15 700<br />
Part Filiales +100M€: 9 700<br />
% contacts IT: 21%
<div id="upbutton"><a onclick=" hide('2');">fermer</a></div>
</div>
</div>
<div class="opener col">EMAILS NOMINATIFS: 400</div>

<div class="opener col">OPT OUT: 3%</div>

  <div class="opener col">LIGNES DIRECTES: 35%</div></div>

最佳答案

您可以遍历其他元素并在“显示”函数中先关闭它们

function show(id) { 

    var benefits = document.getElementsByClassName("benefits");
    for(var i = 0; i<benefits.length; i++){
        benefits[i].style.display="none";
    }

    if(document.getElementById('b'+id).style.display=='none') { 
        document.getElementById('b'+id).style.display='block'; 
    } 

    return false;
}

关于javascript - 点击事件 : divs appear one at a time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47675463/

相关文章:

html - 在一行上对齐 div 并水平居中

css - 可以强制 child 换行但保持 child 的行为,如内联 block ?请参阅代码进行说明

javascript - 一旦用户进入新页面,菜单将不会向后滑动

javascript - 我不想在我的行中出现圆圈 Highchart

javascript - 如何强制隐藏在我的页面上呈现的 div?

javascript - 由于 css 不正确,网页在不同分辨率下显示不正确

javascript - 如何以编程方式读取 wkwebview 的控制台日志

html - 我想要一个带有 'fade out effect' 的背景图像。 CSS3

css - 为什么验证器在样式表媒体屏幕句柄中说错误

html - 移除 Foundation 6 下拉箭头