【发布时间】:2020-12-04 11:42:09
【问题描述】:
函数 slideToggle 没有检测到 div 脚本的先前打开/关闭状态只有 javascript,因为在 jquery 中没问题,但我只想要 javascript。
当我单击第二个按钮时,div 会打开并立即关闭,因为脚本不包括检测我认为的状态,但我看不到如何修改 javascript 脚本以防止错误。 我希望每个按钮打开和关闭自己的 div。
当前结果: https://jsfiddle.net/vincent1890/5fje4zwv/2/
<!-- language: lang-html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="css.css">
<!-- <script src="https://code.jquery.com/jquery-1.12.4.js"></script> -->
<style type="text/css">
/* Just to play with animations */
.header {
padding: 10px 16px;
background: #555;
color: #f1f1f1;
font-size: 0.835em;
text-transform: uppercase;
letter-spacing: 0.125em;
font-weight: bold;
}
/* Some Generic styles */
body {
text-align: center;
font-family: "Open Sans", Helvetica, Arial, sans-serif;
color: #444;
line-height: 1.6;
}
/* CSS styles "+ OPTIONS ..." */
.bouton-deplier {
text-decoration: none;
color: #fff;
background: #000;
padding: 5px 10px;
cursor: pointer;
}
.montexte {
padding: 10px 10px 20px 10px;
}
#mdiv {
height: 0px;
margin-top: 0px;
border-radius: 0px;
font-weight: bold;
text-align: center;
overflow-y: hidden;
background-color: #ef1;
margin-bottom: 0em;
color: rgba(0, 0, 0, .65);
}
#mdiv2 {
height: 0px;
margin-top: 0px;
border-radius: 0px;
font-weight: bold;
text-align: center;
overflow-y: hidden;
background-color: #ef1;
margin-bottom: 0em;
color: rgba(0, 0, 0, .65);
}
</style>
</head>
<body onload="chg_item()">
<div class="header" id="myHeader" >
<button class="bouton-deplier" id="mbtn" onclick="slideToggle('mdiv', 50);">+ Options autres</button>
<button class="bouton-deplier" id="mbtn2" onclick="slideToggle('mdiv2', 100);">+ Optionnel (Telephonie Audioconf)</button>
<div id="mdiv">
<div class="montexte">
<label for="UidText">Uid (User):</label>
<input type="text" id="ChoisirUid" onfocus="this.value=''" onchange="chg_item()">
</div>
</div>
<div id="mdiv2">
<div class="montexte">
<label for="TelNumberText">Num Tel (User):</label>
<input type="text" id="ChoisirTelNumber" onfocus="this.value=''" onchange="chg_item()">
<br>
<label for="NomPrenomText">Nom Prenom :</label>
<input type="text" id="ChoisirNomPrenom" onfocus="this.value=''" onchange="chg_item()">
</div>
</div>
</div>
</body>
<script>
var slideOpen = false;
//var heightChecked = false;
var initHeight = 60;
var intval = null;
function slideToggle(NameDiv, Height) {
var initHeight = Height;
window.clearInterval(intval);
var NameDiv = document.getElementById(NameDiv);
/*
if(!heightChecked) {
initHeight = NameDiv.offsetHeight;
heightChecked = true;
}
*/
if(slideOpen) {
var h = initHeight;
slideOpen = false;
intval = setInterval(function(){
h--;
NameDiv.style.height = h + 'px';
if(h <= 0)
window.clearInterval(intval);
}, 1
);
}
else {
var h = 0;
slideOpen = true;
intval = setInterval(function(){
h++;
NameDiv.style.height = h + 'px';
if(h >= initHeight)
window.clearInterval(intval);
}, 1
);
}
}
</script>
</html>
【问题讨论】:
标签: javascript html jquery