Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.06.2011, 11:20
Интересующийся
Отправить личное сообщение для eXtreme Посмотреть профиль Найти все сообщения от eXtreme
 
Регистрация: 29.03.2010
Сообщений: 15

JS против jquery. Раскрасить четные строки
Нашел в нете пример. Есть таблица. Нужно четным строкам таблицы присвоить класс color при помощи чистого javascript.
на jquery все просто и понятно.

<script language="javascript" type="text/javascript">
 $("tr:nth-child(color)").addClass("color");
 </script>


Еще пример на чистом js

<script language="javascript" type="text/javascript">
var tables = document.getElementsByTagName("table");
for ( var t = 0; t < tables.length; t++ ) {
var rows = tables[t].getElementsByTagName("tr");
for ( var i = 1; i < rows.length; i += 2 )
if ( !/(^|s)color(s|$)/.test( rows[i].className ) )
rows[i].className += "color";}
</script>


Ну тут мне вообще только первые 5-6 строк понятны. Есть ли более адекватная возможность сделать это?. Просто последние 2 строки вообще наводят на непонятные мысли. Спасибо большое.
Ответить с цитированием
  #2 (permalink)  
Старый 03.06.2011, 11:27
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Цитата:
Есть ли более адекватная возможность сделать это?
Код нормальный.

Почитайте про регэкспы.
Ответить с цитированием
  #3 (permalink)  
Старый 03.06.2011, 11:37
Интересующийся
Отправить личное сообщение для eXtreme Посмотреть профиль Найти все сообщения от eXtreme
 
Регистрация: 29.03.2010
Сообщений: 15

о спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 03.06.2011, 11:40
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<script type="text/javascript">
window.onload = function(){
    var li = document.getElementById('ul').children, i = li.length;
    while(i--) {
        li[i].style.backgroundColor = i%2 ? 'red' : 'green';
    }
};
</script>

<ul id="ul">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>
Ответить с цитированием
  #5 (permalink)  
Старый 03.06.2011, 11:50
Интересующийся
Отправить личное сообщение для eXtreme Посмотреть профиль Найти все сообщения от eXtreme
 
Регистрация: 29.03.2010
Сообщений: 15

а может кто если кому не сложно описать что происходит в каждой строке? как можно подробнее. Спасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 03.06.2011, 11:52
Интересующийся
Отправить личное сообщение для eXtreme Посмотреть профиль Найти все сообщения от eXtreme
 
Регистрация: 29.03.2010
Сообщений: 15

Сообщение от monolithed Посмотреть сообщение
<script type="text/javascript">
window.onload = function(){
    var li = document.getElementById('ul').children, i = li.length;
    while(i--) {
        li[i].style.backgroundColor = i%2 ? 'red' : 'green';
    }
};
</script>

<ul id="ul">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>
А мне надо отыскать в таблице четные строки tr и присвоить им класс color
Ответить с цитированием
  #7 (permalink)  
Старый 03.06.2011, 13:19
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от eXtreme
А мне надо отыскать в таблице четные строки tr и присвоить им класс color
смысл тот же, нужно сделать выборку (или проверку) на TR и заменить .style.backgroundColor на .className.
Ответить с цитированием
  #8 (permalink)  
Старый 03.06.2011, 14:05
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Захотелось немного подправить ваш скрипт
var tables = document.getElementsByTagName("table");
for ( var t = 0; tables[t]; t++ ) {
  var rows = tables[t].getElementsByTagName("tr");
  for ( var i = 1; rows[i]; i+=2 ) {
    if ( (" " + rows[i].className + " ").indexOf(" color ") < 0  ) {
      rows[i].className = rows[i].className ? rows[i].className + " color" :  "color";
    }
  }
}
Ответить с цитированием
  #9 (permalink)  
Старый 02.06.2015, 11:06
Новичок на форуме
Отправить личное сообщение для nyshka Посмотреть профиль Найти все сообщения от nyshka
 
Регистрация: 09.05.2015
Сообщений: 8

а шахматкой на jqery как сделать???
Ответить с цитированием
  #10 (permalink)  
Старый 02.06.2015, 11:11
Новичок на форуме
Отправить личное сообщение для Василий12330 Посмотреть профиль Найти все сообщения от Василий12330
 
Регистрация: 02.06.2015
Сообщений: 5

А почему не сделать через CSS с помощью псевдокласса :nth-child ?
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти проблему с jQuery или писать js? Saladdin Элементы интерфейса 0 17.03.2011 17:02
jQuery jCarousel в две строки Родогор Элементы интерфейса 2 12.11.2010 18:47
jQuery, load: замена элемента вырубает js на странице. warobushek AJAX и COMET 0 08.10.2010 07:44
Вакансия: Front-end разработчик (HTML, CSS, JS, Ajax, jQuery) ivankov Работа 0 05.10.2010 19:00
помогите написать аналог строки include("index.php?open=1") на js bushstas Общие вопросы Javascript 1 19.07.2009 02:48