繁体   English   中英

如何替换 vanilla JS 上的 className?

[英]How to replace a className on vanilla JS?

如何将 className (List) 替换为 Javascript? 我有这个代码:

document.addEventListener("DOMContentLoaded", (e) => {
    const url = window.location;
    let urlReq = url.href;
    if(urlReq.includes('/home')){
        document.getElementById('default-sidenav-menu').className.replace('sidenav-main nav-expanded nav-lock nav-collapsible  sidenav-active-rounded  sidenav-dark', 'sidenav-main nav-collapsed nav-collapsible  sidenav-active-rounded  sidenav-dark');
        console.log(document.getElementById('default-sidenav-menu').className);
    }
});

这是我的 html:

<aside class="sidenav-main nav-expanded nav-lock nav-collapsible  sidenav-active-rounded  sidenav-dark" id="default-sidenav-menu">
    <div class="brand-sidebar">
    ...
</aside>

但是当我的页面加载时,我仍然得到默认的 className: sidenav-main nav-expanded nav-lock nav-collapsible sidenav-active-rounded sidenav-dark

我犯了什么错误?

您不需要替换,只需将字符串类分配给className属性:

Element 接口的className属性获取和设置指定元素的 class 属性的值。

句法:

elementNodeReference.className = cName;

在哪里:

cName是一个字符串变量,表示当前元素的类或空格分隔的类。

演示:

 document.addEventListener("DOMContentLoaded", (e) => { // other code document.getElementById('default-sidenav-menu').className = 'sidenav-main nav-expanded nav-lock nav-collapsible sidenav-active-rounded sidenav-dark', 'sidenav-main nav-collapsed nav-collapsible sidenav-active-rounded sidenav-dark'; console.log(document.getElementById('default-sidenav-menu').className); // other code });
 <aside class="nav-lock nav-collapsible" id="default-sidenav-menu"> <div class="brand-sidebar"> </div> </aside>

document.getElementById('default-sidenav-menu').className.replace

这意味着您要用另一个字符串替换该字符串,因为“className”在您获得它时只是一个字符串。

document.body.className.constructor.name
=> "String"

如果你想替换它,那么你应该像这样分配新的类名。

document.getElementById('default-sidenav-menu').className = 
 document.getElementById('default-sidenav-menu').className.replace("something", "something_new");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM