【发布时间】:2019-12-17 15:42:03
【问题描述】:
我有这个 Navbar 元素,它包含这样的链接:
<li id="navbar-about-li">
<Link className="navbar-a" to="/about" onClick={this.onUpdate.bind(this)}>
About me
</Link>
</li>
<li id="navbar-projects-li">
<Link className="navbar-a" to="/projects" onClick={this.onUpdate.bind(this)}>
Projects
</Link>
</li>
当我单击其中一个按钮时,该按钮会显示下划线,但不会从所有其他按钮中删除他的下划线。这是 onUpdate 函数:
onUpdate(e) {
this.removeAllStyling();
this.setUnderLineForElement(e.target);
}
这里是 removeAllStyling 函数:
removeAllStyling() {
//remove the underline from all li tag elements
let links = document.getElementsByTagName("li");
for (let link of links) {
link.style.textDecoration = "none";
}
}
我在这里做错了什么?我尝试在 removeAllStyling 中打印链接,它们是我想要的正确元素,所以我知道这不是问题...
【问题讨论】:
-
不要使用原始 javascript 来设置这样的元素的下划线。让元素本身做出反应样式。
-
嗯,好吧,我试过
link.style = noUnderline;,其中 noUnderline 只是一个带有textDecoration: "none",的对象,但由于某种原因,我现在有 2 个元素加了下划线。所以这有点工作 -
这能回答你的问题吗? REACT - toggle class onclick
-
您正在使用 React,但您正在通过手动执行 DOM 操作来对抗框架。这会导致错误和未定义的行为。
标签: javascript css reactjs