Javascript手风琴功能赢得';我跑不了?
我对编写Javascript还不熟悉,所以我正在尝试编写自己的简单手风琴函数。我试图使它成为这样,当我点击h2时,它会显示“accordion-#”div。如果手风琴已经打开(“display=block”),我想隐藏它(“display=none”)。当我点击h2时,什么也没发生。我搜索了所有地方,但我没有发现我的代码有什么问题:Javascript手风琴功能赢得';我跑不了?,javascript,Javascript,我对编写Javascript还不熟悉,所以我正在尝试编写自己的简单手风琴函数。我试图使它成为这样,当我点击h2时,它会显示“accordion-#”div。如果手风琴已经打开(“display=block”),我想隐藏它(“display=none”)。当我点击h2时,什么也没发生。我搜索了所有地方,但我没有发现我的代码有什么问题: function initiate(i) { var selected = document.getElementById('accordion-'+i).
function initiate(i) {
var selected = document.getElementById('accordion-'+i).style.display;
if(selected == "block") {
selected = "none";
} else {
selected = "block";
}
}
示例HTML
<h2 onClick="initiate('6')">Project</h2>
<!-- begin code to hide/show -->
<div id="accordion-6" class="accordion">
<div class="left">
<p>left column text</p>
</div>
<div class="right">
<p>right column text</p>
</div>
</div> <!-- end code to hide/show -->
`有几件事-首先,您正在创建的变量“selected”不是您所想的;它不是可以更改为目标源元素的style属性的对象。它是一个存储属性值的字符串。要实现您想要的功能,您需要将元素存储为var,然后使用“.style.display=”对其进行更改。大概是这样的:
var TargetDiv = document.getElementById('accordion-'+i);
if(TargetDiv.style.display == "block" || TargetDiv.style.display == "") {
TargetDiv.style.display = "none";
}
else {
TargetDiv.style.display = "block";
}
您将看到我所做的另一个更改是您的IF条件还需要检查空的style.display值;这是因为即使您通过CSS将其设置为“block”,实际DIV的标记上也没有“style”属性,因此style.display在页面加载时(即,当您第一次针对给定DIV运行函数时)为空
jsFiddle:我现在明白了。我的变量只是将显示值存储为字符串,而不是从我试图指向的div框中创建一个对象。现在有道理了。我也明白了为什么要更改if语句。非常感谢!
var TargetDiv = document.getElementById('accordion-'+i);
if(TargetDiv.style.display == "block" || TargetDiv.style.display == "") {
TargetDiv.style.display = "none";
}
else {
TargetDiv.style.display = "block";
}