使用Javascript突出显示表的一行

时间:2013-03-28 13:37:17

标签: javascript html html-table

你好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道歉。

谢谢!

3 个答案:

答案 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"
        }