Javascript 使用EJS和HTML向已添加类的元素添加其他类?
我目前正在尝试使用ejs为navbar开发一个部分模板文件,但是我正在努力向已经添加了类的元素添加其他类 我尝试了两种添加附加类的方法,这是第一种:Javascript 使用EJS和HTML向已添加类的元素添加其他类?,javascript,html,css,node.js,ejs,Javascript,Html,Css,Node.js,Ejs,我目前正在尝试使用ejs为navbar开发一个部分模板文件,但是我正在努力向已经添加了类的元素添加其他类 我尝试了两种添加附加类的方法,这是第一种: <li class='navbar-item'<% if (pageTitle === 'Home') { %> class="active" <% } %>> <a href="/home">Home</a></li> 但是,这不起作用,所以我决定尝试将EJS嵌入cla
<li class='navbar-item'<% if (pageTitle === 'Home') { %> class="active" <% } %>> <a href="/home">Home</a></li>
但是,这不起作用,所以我决定尝试将EJS嵌入class属性中,如下所示
<li class="nav-item <% if (pageTitle === 'Home') { %> active <% } %>">
这也不起作用,我已经确保pageTitle是正确的,因为它是在网页内的其他地方使用,工作良好
我不确定下一步是什么,我已经考虑过使用一个额外的JS文件,但这似乎适得其反,因为我已经有能力将JS嵌入HTML中
感谢您的帮助,提前谢谢。我想问题可能在比较中。作为第一个检查,在第二个版本中,请同时尝试“==”和“!=”。如果“!=”给你“当前”类,你知道逻辑一般是好的。 有关更多详细信息以及如何在此处比较字符串的更好方法,请查看此处:
使用if-else语句,我成功地为自己的问题开发了一个替代解决方案。我是在与一位同学讨论后得出这个结论的,他提出了一个相对简单的解决方案
<li <% if (pageTitle == 'Home') { %> class='navbar-item active'<% } else { %> class = 'navbar-item' <% } %>>
这并不是我所希望的那样,但仍然有效。像这样的条件运算符可以让您的生活更轻松
<li class="<%= pageTitle == 'Home' ? 'navbar-item active' : 'navbar-item' %>"
这是一篇有趣的文章,但是这里的比较应该没有什么区别。我已确保输入的值是正确的。谢谢。我不是说值是正确的,我的意思是比较(运算符)本身可能是错误的。因此,我建议使用否定运算符,看看是否得到正确的结果。还要注意引用的资源中的“==”vs“==”和“==”vs.equal()”。请试一试。我确实查看了比较运算符,但是在本例中没有区别,因为我通过express route提供了一个键值对象对,该值实际上是一个字符串,因为它是静态的,而不是动态的。阅读上面您自己的解决方案,您能否详细说明为什么它解决了您的问题?在我看来,您现在生成的是“导航栏项目活动”,而不是“导航项目当前”。这似乎有点像是命名或css中的问题,而不是代码逻辑中的问题……诚然,我添加的类中有一个错误,但是这个问题没有什么区别,因为我使用chrome上的DevTools来检查将添加哪些类,代码仍然存在一个持久性问题,没有成功地将类添加到class属性中。。。我现在已经更新了最初的帖子,使其更适合工作。这是一个比我更好的解决方案,它更高效,使用更少的代码,谢谢。