[英]How can I toggle onClick var div class style without using jQuery?
我試圖在單擊按鈕時使用類名切換所有元素的高度。
這是我目前正在使用的。 現在,它將第一次在onClick上起作用,但是在第二次點擊時不會變回原來的狀態。 當我將if語句更改為NOT true時,該函數仍會觸發。
<head>
<script type="text/javascript">
function changeHeight() {
var elems = document.getElementsByClassName('div1');
for(var i = 0; i < elems.length; i++)
{
if (elems[i].style.height = '25px'){
elems[i].style.height = '110px';
}
else {
elems[i].style.height = '25px';
document.getElementById("expand").innerHTML="[+]";
}
</script>
<style type="text/css">
.div1 {
overflow:hidden;
height:25px;
}
</script>
</head>
<body>
<button type="button" id="expand" onClick="changeHeight();">[+]</button>
<div class="div1">
content
</div>
<div class="div1">
content
</div>
</body>
我認為問題是我無法“開槍”開槍,因為我的if不能正確開火。 有任何想法嗎?
謝謝-特雷弗
if
條件檢查錯誤,則需要if
條件檢查中使用相等運算符( ==
)而不是賦值運算符( =
),因此請更改:
if (elems[i].style.height = '25px'){
..
至
if (elems[i].style.height == '25px'){ //use == not =
..
是的,也缺少for循環的結束標記}
,請執行以下操作:
for(var i = 0; i < elems.length; i++) {
if (elems[i].style.height == '25px'){
elems[i].style.height = '110px';
}
else {
elems[i].style.height = '25px';
document.getElementById("expand").innerHTML="[+]";
}
}
將后代選擇器用於此類任務。 這要容易得多。
<head>
<style type="text/css">
.div1 {
overflow:hidden;
height:25px;
}
.on .div1 {
height: 110px;
}
</style>
<script>
function foo(ele) {
if ( !ele.state ) {
document.body.className = "on";
ele.state = true;
}
else {
document.body.className = "";
ele.state = false;
}
};
</script>
</head>
<body>
<button type="button" id="expand" onclick="foo(this);">[+]</button>
<div class="div1">
content
</div>
<div class="div1">
content
</div>
</body>
PS。 您的樣式標簽已通過腳本標簽關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.