【发布时间】:2016-01-07 17:05:21
【问题描述】:
有没有办法进一步简化这个 javascript 函数?为下拉菜单输入 4 个变量似乎有点荒谬,当我想要超过 1 个按钮时,很难跟踪变量。
代码如下:
<!DOCTYPE html>
<html>
<head>
<style>
.dropbtn:hover, .dropbtn:focus {
background-color: #3e8e41;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
}
.dropdown-content a {
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdown a:hover {background-color: #f1f1f1}
.show {display:block;}
</style>
</head>
<body>
<h2>Clickable Dropdown</h2>
<p>Click on the button to open the dropdown menu.</p>
<div class="dropdown">
<button onclick="myFunction('dropdown-content','myDropdown','show','.dropbtn')" class="dropbtn">Dropdown</button>
<div id="myDropdown" class="dropdown-content">
<a href="#home">Home</a>
<a href="#about">About</a>
<a href="#contact">Contact</a>
</div>
</div>
<script>
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function myFunction(dropDownClass,dropDownId,show,dropbtnClass) {
var dropdowns = document.getElementsByClassName(dropDownClass);
var i;
var openDropdown = dropdowns[i];
document.getElementById(dropDownId).classList.toggle(show);
// Close the dropdown if the user clicks outside of it
window.onclick = function(event) {
if (!event.target.matches(dropbtnClass)) {
for (i = 0; i < dropdowns.length; i++) {
if (openDropdown.classList.contains(show)) {
openDropdown.classList.remove(show);
}
}
}
}
}
</script>
</body>
</html>
【问题讨论】:
-
要求重构工作代码? -> codereview.stackexchange.com
标签: javascript html css