【发布时间】:2017-03-21 18:05:05
【问题描述】:
我基本上是在我的“面板”类中添加一个 iframe。我希望 iframe 在单击按钮时显示,如果再次单击,则隐藏它。我该怎么做呢?
这是我的手风琴的 html 代码:
<button class="accordion">Link1</button>
<div class="panel">
<iframe src="linkcodehere" class="iframestreet" style="border:0; display:none; visibility: hidden;"></iframe>
//some other code to display information
</div>
<button class="accordion">Link2</button>
<div class="panel">
<iframe src="linkcodehere2" class="iframestreet" style="border:0; display:none; visibility: hidden;"></iframe>
//some other code to display information
</div>
这是 javascript 在类面板中显示元素的代码:
$(document).ready(function() {
var acc = document.getElementsByClassName("accordion");
var i;
var id = document.getElementsByClassName("iframestreet");
for (i = 0; i < acc.length; i++) {
acc[i].onclick = function() {
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
if (id[i].style.display == 'block'){
console.log("hide this");
id[i].style.display = 'none';
id[i].style.visibility = 'hidden';
} else {
console.log("display it");
id[i].style.display = 'block';
id[i].style.visibility = 'visible';
}
}
}
});
查看控制台日志时出现此错误:Uncaught TypeError: Cannot read property 'style' of undefined
【问题讨论】:
-
命名事物
id不是一个好习惯,因为它被大量用于 id 并且命名手风琴acc也不是很可读。这样你不会真正从你的程序中节省时间,而且你可能会为工作增加时间,因为它令人困惑。我还建议为此创建一个 jsFiddle。 -
getElementByClass不是函数。 -
你的 HTML 有一些额外的 div。
-
抱歉解决了这些问题,正在重写我的代码,不想复制/粘贴所有内容,因为它太大了。
标签: javascript html css iframe accordion