Проверьте, существует ли класс в любой строке таблицы в JavaScript - PullRequest
1 голос
/ 18 февраля 2011

У меня есть таблица (упрощенно для этого вопроса):

<table><br>
  <tr onclick="selectRow"><br>
    <td>table data</td><br>
    <td>table data</td><br>
    <td>table data</td><br>
  </tr><br>
  <tr class="selected" onclick="selectRow"><br>
    <td>table data</td><br>
    <td>table data</td><br>
    <td>table data</td><br>
  </tr><br>
</table>

class="selected" является результатом нажатия на строку. Я хочу создать кнопку, которая при нажатии вернула бы true, если есть строка с классом selected, и false, если ее нет.

Любая помощь очень ценится.

Ответы [ 4 ]

3 голосов
/ 18 февраля 2011
function checkExist(){
       var myTr = document.getElementsByTagName('tr');

       for(var i=myTr.length; i--;){
           if(myTr[i].className.match('(^|\\s+)selected(\\s+|$)')){
               alert('true');//return true;
               return;
           }
       }
       alert('false'); //return false
}

и в основном прикрепить к кнопке или ссылке, как это:

<table>
    <tr onclick="selectRow">
        <td>table data</td>
        <td>table data</td>
        <td>table data</td>
    </tr>
    <tr class='selected' onclick="selectRow">
        <td>table data</td>
        <td>table data</td>
        <td>table data</td>
    </tr>
</table>
<a href='#' onclick='checkExist()'>click me to find out</a>
2 голосов
/ 18 февраля 2011

Рассматривали ли вы использование библиотеки? Используя jQuery, это может быть просто: http://jsfiddle.net/andersand/QAb4s/

По моему опыту, благодаря использованию JS-фреймворка мне больше не нужно беспокоиться о кросс-браузерной совместимости, а также о высокой скорости разработки

2 голосов
/ 18 февраля 2011

Если вы можете использовать jQuery:

http://api.jquery.com/hasClass/

0 голосов
/ 18 февраля 2011

Без использования внешней библиотеки вам нужно будет сделать что-то вроде следующего:

  1. Получить все строки в таблице и начать их циклически проходить
  2. Проверить каждую строкуclassName собственность для вашего класса (selected).
    • Если вы имеете дело только с одним классом, вы можете просто сравнить:
      tr.className === 'selected'
    • Если в строке может быть более одного класса, вы, вероятно, захотитеиспользуйте регулярные выражения.Что-то вроде /\bselected\b/
  3. Как только вы получите совпадение, отмените цикл и немедленно верните true

Для дополнительного кредита вы можете поставить всеэто в функцию, которая принимает класс, который вы ищете, и таблицу, в которой нужно выглядеть как аргументы.

Назначения должны быть выполнены в первую очередь утром в понедельник.

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