javascript - 按钮需要点击 2 次才能换出 div
问题描述
单击按钮时,我有一个简单的 div 交换。但是,当页面第一次加载时,它需要用户在按钮上单击两次才能使该功能起作用。之后一切正常。请问有什么建议吗?
我的代码:
<script type="text/javascript">
function SwapDivsWithClick(div1, div2) {
d1 = document.getElementById(div1);
d2 = document.getElementById(div2);
if (d2.style.display == "none") {
d1.style.display = "none";
d2.style.display = "block";
} else {
d1.style.display = "block";
d2.style.display = "none";
}
}
</script>
<style>
#swapper-other {
width: 200px;
height: 50px;
background-color: darkred;
color: #fff;
display: none;
}
#swapper-first {
width: 200px;
height: 50px;
background-color: yellowgreen;
color: #444;
}
</style>
<div id="swapper-first">
<p>
<a href="javascript:SwapDivsWithClick('swapper-first','swapper-other')">(Swap Divs)</a>
</p>
<p style="margin:0; color:red;">
This div displayed when the web page first loaded.
</p>
</div>
<div id="swapper-other">
<a href="javascript:SwapDivsWithClick('swapper-first','swapper-other')">(Swap Divs)</a>
<p>
This div displayed when the link was clicked.
</p>
</div>
解决方案
问题是你的css显示值没有被JS捕获d2.style.display
而是尝试以下
function SwapDivsWithClick(div1, div2) {
d1 = document.getElementById(div1);
d2 = document.getElementById(div2);
style = getComputedStyle(d2);
if (style.display == "none") {
d1.style.display = "none";
d2.style.display = "block";
} else {
d1.style.display = "block";
d2.style.display = "none";
}
}
这将在调用时获得 css。
推荐阅读
- assembly - 发布后添加到 x86 CPU 的指令
- spacemacs - 如何在 spacemacs 中创建自己的函数?
- c++ - 在数组中查找总计
- android - 三星 Galaxy 设备上的指纹扫描仪
- python - AttributeError: 'NoneType' 对象没有属性 'data' - 当我正在编写一个函数来将一个元素插入到排序的链表中时
- php - laravel:在控制器中获取查询参数值?
- javascript - 在 VueX 中跨多个存储数组查找匹配项
- java - 使用 MySQL 数据库进行 Java 登录
- python - 在应用程序初始化之前,如何在 wtf 中使用 url_for?
- java - Android Studio 没有输入?