你好StackOverflow的人,
提前道歉我是多么愚蠢,但我需要你的帮助。
我有一个由SQL查询生成的表,用户需要能够选择一行,将值传递给隐藏文本框。这一点我设法做得很好,但我需要显示他们选择了哪一行,如果他们改变主意然后选择另一行,则只突出显示新行。
我知道这应该是非常基本的,但我无法弄清楚逻辑。到目前为止,我有这个:
function getOLBC(olbc)
{
document.getElementById("ANSWER.TTQ.MENSYS.1.").value=olbc;
var rows = document.getElementById("results").getElementsByTagName("tr").length;
for (var i =0; i < rows; i++)
{
var answer = document.getElementById("ANSWER.TTQ.MENSYS.1.").value
if (answer = olbc)
{
document.getElementById(olbc).style.background="red";
document.getElementById(olbc).style.color="white";
}
else
{
document.getElementById(olbc).style.background="white";
}
}
}
HTML看起来像这样:
<tr class="unselected" id="AL-AAA98"onclick="getOLBC('AL-AAA98')"><td class="OLBC">AL-AAA98</td><td>AAAL</td><td>Grade A in Economics<br />Grade A in Mathematics<br />Grade A in Business Studies</td><td></td></tr>
<tr class="unselected" id="AL-AAA77"onclick="getOLBC('AL-AAA77')"><td class="OLBC">AL-AAA77</td><td>AAAL</td><td>Grade A in Economics<br />Grade A in Mathematics<br />Grade A in Spanish</td><td></td></tr>
<tr class="unselected" id="AL-AAA42"onclick="getOLBC('AL-AAA42')"><td class="OLBC">AL-AAA42</td><td>A*AAL</td><td>Grade A in Mathematics<br />Grade A in Human Biology<br />Grade A in Physics</td><td></td></tr>
有人可以帮忙吗?对这个问题的n00bish-ness道歉。
谢谢!
答案 0 :(得分:2)
我认为这就是你要找的......我删除了onclick dom元素(最好将js与dom分开)。
使用jquery:http://jsfiddle.net/cr1urhv6/
$("#myTable tr").click(function(e) {
$("#myTable tr").removeClass("highlight");
$(this).addClass("highlight");
});
或使用纯js:http://jsfiddle.net/cr1urhv6/1/
var rows = document.querySelectorAll("#myTable tr");
for (var i = 0; i < rows.length; i++) {
rows[i].addEventListener('click', function() {
[].forEach.call(rows, function(el) {
el.classList.remove("highlight");
});
this.className += ' highlight';
}, false);
}
这是删除任何当前突出显示...然后将突出显示类添加到我们单击的TR中。
答案 1 :(得分:1)
尝试做
if (answer == olbc)
而不是
if (answer = olbc)
答案 2 :(得分:0)
我最终还是修补了足以找到我自己的解决方案,这可能不像Smerny的答案那么优雅,但在这里它是:
function getOLBC(olbc){
var selectedCount = document.getElementsByClassName("selected").length;
if (selectedCount <= 0)
{
document.getElementById("ANSWER.TTQ.MENSYS.1.").value=olbc;
document.getElementById(olbc).className="selected"
}
else
{
var selectedRow = document.getElementsByClassName("selected")[0].id
document.getElementById(selectedRow).className="deselected";
document.getElementById("ANSWER.TTQ.MENSYS.1.").value=olbc;
document.getElementById(olbc).className="selected"
}