0 javascript if-statement class onclick
如果元素有一个active class,我正在寻找解决方案,它可以将onclick值更改为“closeSideBar”吗?
function openSidebar() {
document.getElementById('sidebar').style.width = '250px';
document.getElementById('hamburger').style.marginLeft = '250px'
}
function closeSideBar() {
document.getElementById('sidebar').style.width = '0';
document.getElementById('hamburger').style.marginLeft = '0'
}Run Code Online (Sandbox Code Playgroud)
<button id="hamburger" onclick="openSidebar()">Run Code Online (Sandbox Code Playgroud)
我正在寻找如何实现此结果的解决方案?
<button id="hamburger" onclick="closeSideBar()" class="active">
Run Code Online (Sandbox Code Playgroud)
您不想更改属性值。您只想调用一个函数并指导其行为。
而不是单独的打开/关闭功能,使用一个:
function toggleSidebar(el) {
if (el.classList.contains('active')) {
document.getElementById('sidebar').style.width = '0';
document.getElementById('hamburger').style.marginLeft = '0'
} else {
document.getElementById('sidebar').style.width = '250px';
document.getElementById('hamburger').style.marginLeft = '250px'
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用函数,传递元素:
<button id="hamburger" onclick="toggleSidebar(this)" class="active">
Run Code Online (Sandbox Code Playgroud)
提示:不要直接操作样式。相反,切换类,以便您可以在样式表中的一个地方更改侧边栏的大小和位置:
function toggleSidebar(el) {
if (el.classList.contains('active')) {
document.body.classList.remove('sidebar-in');
} else {
document.body.classList.add('sidebar-in');
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用后代选择器设置样式:
body .sidebar { ... }
body.sidebar-in .sidebar { ... }
Run Code Online (Sandbox Code Playgroud)