【发布时间】:2019-11-06 17:44:51
【问题描述】:
我正在尝试比较 2 个值并在条件成立时更改其中一个的颜色。 但是我也有一个搜索栏,当它使用 Rails 包装在我的 javascript 函数中的 语句中时,我无法访问标记值。
我原来的代码是这样的
<% if track.user.username == current_user.username%>
<td class="track_table_current_user">
<span><%= track.user.username %></span>
</td>
<% else %>
<td class="td-userName">
<span class="track_table_user_name"><%= track.user.username %> </span>
</td>
<% end %>
我现在的三元:
<td class="track_table_user_name <% track.user.username == current_user.username ? "this_current_user" : "other_user" %>">
<%= track.user.username %>
</td>
如果我使用 则无法访问值的搜索功能:
function trackTableSearch() {
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("trackTableInput");
filter = input.value.toUpperCase();
table = document.getElementById("tracksTable");
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
tdN = tr[i].getElementsByClassName("td-trackName")[0];
tdU = tr[i].getElementsByClassName("track_table_user_name")[0];
tdR = tr[i].getElementsByClassName("td-trackApproved")[0];
tdP = tr[i].getElementsByClassName("td-public")[0];
if ((tdN) || (tdU) || (tdR) || (tdP)) {
txtValueN = tdN.textContent || tdN.innerText;
txtValueU = tdU.textContent || tdU.innerText;
txtValueA = tdR.textContent || tdR.innerText;
txtValueP = tdP.textContent || tdP.innerText;
if (txtValueN.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
}else if (txtValueU.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else if (txtValueA.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
}else if (txtValueP.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
}else{
tr[i].style.display = "none";
}
}
}
【问题讨论】:
-
你的第二个代码没有设置与第一个代码相同的类,我不确定我理解你的问题,三元运算符有什么问题?它不工作吗?我想我会把这个逻辑转移到一个助手身上
-
是的,第一次是在我更改类名之前。我的代码内联中有其他三元组,但使用 == 和 2 个 标签似乎并没有改变我正在调用的 css 类。
标签: ruby-on-rails ruby if-statement conditional-statements ternary