Как использовать для цикла в Javascript, JQuery для количества строк в таблице? - PullRequest
1 голос
/ 14 ноября 2011

У меня есть таблица, и я хочу, чтобы с ней выполнялось какое-то действие с помощью цикла for в JavaScript. Так может кто-нибудь сказать мне, что будет код для него. что цикл for будет работать для всех строк таблицы. На самом деле я должен удалить класс из таблицы, а затем после этого я должен применить класс к определенной строке. Какова моя задача, я должен выделить невыделенную выбранную строку. когда я выбираю любую строку, она подсвечивается, но когда я выбираю другую строку, она остается выделенной, а другая - тоже. поэтому я хочу удалить выбранный класс из всех строк таблицы, а затем применить выбранный класс для конкретной строки. МОЙ КОД:

   <style type="text/css">
    .highlight
    {
        background-color: Red;
    }
    .selected
    {
        background-color: #ffdc87;
    }
</style>

<script type="text/javascript">
    function Select(obj) {
        if (obj.className != 'selected') {

            obj.className = 'selected';
            var tbl = document.getElementById("Repaddressorbbl")
            var firstRow = tbl.getElementsByTagName("TR")[0];
        }
        else {
            obj.className = 'prev_class';
            var tbl = document.getElementById("Repaddressorbbl")
            var firstRow = tbl.getElementsByTagName("TR")[0];
        }
    }

</script>

Ответы [ 3 ]

2 голосов
/ 14 ноября 2011

jQuery имеет неявную итерацию, поэтому вам не нужно вручную зацикливать выбранные строки

// remove all "highlight" classes from all <tr> elements
$("#your-table tr").removeClass("highlight");

// highlight row 3
$("#your-table tr:eq(2)").addClass("highlight");

// highlight row that belongs to a specific <td>
$("#my-td").parents("tr").addClass("highlight")

// etc

После удаления всех классов highlight вы сможете повторно выделить любой из них<tr> Вы хотите довольно легко.

Если вам нужна дополнительная помощь, дайте мне знать:)

0 голосов
/ 14 ноября 2011

В POJS вы можете использовать коллекцию строк таблицы для итерации по всем строкам:

var rows = tableElement.rows;
for (var i=0, iLen=rows.length; i<iLen; i++) {
  /* do something with rows[i] */
}

строк это живой NodeList. В некоторых браузерах быстрее сначала преобразовать его в массив, потому что браузер не знает, был ли список изменен или нет, поэтому каждый раз, когда вы получаете к нему доступ, он обновляется.

Более поздние браузеры достаточно умны, чтобы этого не делать, но, несмотря на это, это проблема только больших таблиц или проблема производительности.

В вашем коде:

var firstRow = tbl.getElementsByTagName("TR")[0];

может быть:

var firstRow = tbl.rows[0];
0 голосов
/ 14 ноября 2011

в jquery попробуйте:

 var aaa= $('#yourdivid tr:gt(0)');
 $.each(aaa, function(indx, item) {
           ////your code

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...