[英]Button needs double click to change?
我正在尝试使用按钮创建下拉菜单。 该按钮从+变成--取决于是否显示。 问题是,如果我按一个就可以,但是当我按另一个按钮时,它不会下拉或更改,只要单击两次就可以更改。 码:
<style type="text/css">
#persona{
width: 100px;
height: 50px;
display: none;
}
#productes{
width: 100px;
height: 50px;
display: none;
}
button{
display: block;
margin-bottom: 10px;
width: 50px;
border: none;
}
</style>
</head>
<body>
<button id="b_persona" onclick="show_hide('persona','b_persona')">+</button>
<div id="persona">
</div>
<button id="b_productes" onclick="show_hide('productes','b_productes')">+</button>
<div id="productes">
</div>
<script type="text/javascript">
var show_persona = true;
var show_producte = true;
function show_hide (id,b_id) {
if(!show_persona){
document.getElementById(id).style.display = "none";
document.getElementById(b_id).innerHTML = "+";
show_persona = true;
}else{
document.getElementById(id).style.display = "block";
document.getElementById(b_id).innerHTML = "-";
show_persona = false;
}
if(!show_producte){
document.getElementById(id).style.display = "none";
document.getElementById(b_id).innerHTML = "+";
show_producte = true;
}else{
document.getElementById(id).style.display = "block";
document.getElementById(b_id).innerHTML = "-";
show_producte = false;
}
}
</script>
</body>
问题基本上是当我单击一个按钮,然后单击另一个按钮时。 有任何想法吗? 多谢你们!
一次调用show_hide
将更改两个标志的值。 但是,仅一个<div>
属性将被更改,并且将被更改两次(在每个if
语句中)。 尝试这个:
function show_hide (id,b_id) {
if(id === 'persona'){
if(!show_persona){
document.getElementById(id).style.display = "none";
document.getElementById(b_id).innerHTML = "+";
show_persona = true;
}else{
document.getElementById(id).style.display = "block";
document.getElementById(b_id).innerHTML = "-";
show_persona = false;
}
}
if(id === 'productes'){
if(!show_producte){
document.getElementById(id).style.display = "none";
document.getElementById(b_id).innerHTML = "+";
show_producte = true;
}else{
document.getElementById(id).style.display = "block";
document.getElementById(b_id).innerHTML = "-";
show_producte = false;
}
}
}
也可以这样做
<button id="b_persona" class="all-btn" onclick="show_hide('persona','b_persona')">+</button>
<div id="persona" class="common-class" style="background-color:yellow">
</div>
<button id="b_productes" class="all-btn" onclick="show_hide('productes','b_productes')">+</button>
<div id="productes" class="common-class" style="background-color:red">
</div>
JS:
<script type="text/javascript">
var show_persona = true;
var show_producte = true;
function show_hide (id,b_id) {
var arrAllEle = document.getElementsByClassName('common-class');
var arrAllBtn = document.getElementsByClassName('all-btn');
for(var i =0;i<arrAllEle.length;i++){
arrAllEle[i].style.display ="none";
}
for(var i =0;i<arrAllBtn.length;i++){
arrAllBtn[i].innerHTML ="+";
}
document.getElementById(id).style.display = "block";
document.getElementById(b_id).innerHTML = "-";
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.