Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.02.2015, 22:37
Интересующийся
Отправить личное сообщение для avantyrist Посмотреть профиль Найти все сообщения от avantyrist
 
Регистрация: 05.02.2015
Сообщений: 18

Сравнение содержимого текста Таблици в строках
Добрый день, Потихоньку пытаюсь освоить jQuery, поставил какбы задачю для себя:

На странице Формируется некая таблица, Каждый раз с разным содержанием Строк (tr) и ячеек (td) и разное их количество. К примеру приведу маленькую таблицу:

<table class="compare_table">
 <tbody>
 <tr>
	<th>Имя</th>
	<td>Саша</td>
	<td>Петя</td>
	<td>Игорь</td>
 </tr>
 
 <tr>
  <th>Фамелия</th>
      <td>Петров</td>
      <td>Сидоров</td>
      <td>Сидоров</td>
   </tr>
 
 <tr>
 
  <th>Фамелия</th>
      <td>Харьков</td>
      <td>Харьков</td>
      <td>Харьков</td>
   </tr>
</tbody></table>



Пытаюсь сделать проверку на одинаковое содержание ячеек в строках, и если содержание всех ячеек в строке одинаково, то добавить к строке CSS класс....


jQuery("#compare").click(function(event){
	jQuery(".compare_table tr").each(function() {        // -----  перебираю все строки в таблице

	var tdlast =jQuery(this).find("td:last-child").text();     //----  определяю какой текст  содержится в последней ячейке, текущей строки (отрабатывает нормально!!)

	var blok = jQuery(this).find("td").text();     //----  *НЕМОГУ ПОНЯТЬ как определить значение всех ячеек (по отдельности) в текущей строке чтобы потом сравинить их с tdlast 
		alert ("текст в TD ------- " +blok);
		alert ("текст в ПОСЛЕДНЕМ TD ------- " +tdlast);
	});


*Как я понимаю надо все ячейки с их значениеми, в текущей строке, загнать в масив. Но как ? (
а потом прогнать по циклу етот массив сравнивая с переменной tdlast и если все значения совпали, то сделать:

jQuery(this).parent().addClass('same');

Пожалуста помогите, второй день не отхожу от компа (

Последний раз редактировалось avantyrist, 07.02.2015 в 23:07.
Ответить с цитированием
  #2 (permalink)  
Старый 08.02.2015, 01:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от avantyrist
как определить значение всех ячеек
через цикл each или map
Ответить с цитированием
  #3 (permalink)  
Старый 08.02.2015, 01:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

avantyrist, вариант через filter
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
    .orange {
    background: #FFCC00;
  }
    </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
    jQuery(function() {
    var tr = jQuery(".compare_table tr");
    tr.each(function() {
        var td = jQuery("td", this),
            len = td.length,
            text = td.eq(0).text();
        td = td.filter(function() {
            return jQuery(this).text() == text
        }).length;
        jQuery(this).toggleClass("orange", len == td)
    })
}); </script>
</head>

<body>
<table class="compare_table">
 <tbody>
 <tr>
	<th>Имя</th>
	<td>Саша</td>
	<td>Петя</td>
	<td>Игорь</td>
 </tr>

 <tr>
  <th>Фамелия</th>
      <td>Петров</td>
      <td>Сидоров</td>
      <td>Сидоров</td>
   </tr>

 <tr>

  <th>Фамелия</th>
      <td>Харьков</td>
      <td>Харьков</td>
      <td>Харьков</td>
   </tr>
</tbody></table>
</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 08.02.2015, 15:59
Интересующийся
Отправить личное сообщение для avantyrist Посмотреть профиль Найти все сообщения от avantyrist
 
Регистрация: 05.02.2015
Сообщений: 18

Рони спасибо Вам, всё работает, но я не могу понять как (
если не тяжело подскажите плиз....

var tr = jQuery(".compare_table tr");
	tr.each(function() {
	var td = jQuery("td", this),         //  я как понял указанный в конце this какраз и даёт возможность перебора в текущей строке ??
	     len = td.length,
	     text = td.eq(1).text();
		
		alert ("Переменная len ------- " +len);         //  выводит количество ячеек(td) в строке(tr),  для чего ??
		alert ("Переменная td ------- " +td);            //  выводит значение  [object Object] ----  не пойму что ето означает :((
		alert ("Переменная text ------- " +text);       //  выводит содержимое в первой ячейке 
		
	      td = td.filter(function(){                             // что оно фильтрует ?  значение td  выводит [object Object]
		return jQuery(this).text() == text              // сделали фильтрацию, но не пойму ета функция как я понимал удаляет обьекты, как она  работает в етой ситуации
		}).length;                                              // какое количество определяем, и для чего??
	jQuery(this).toggleClass("hidden", len == td)      // если сделать addClass  то клас присвоится всем строкам,почему так ?? :(
	})



Вообше не пойму каким образом ето всё работает, очень хочется понять, документации я много перечитывал, но документация и практика, ето разные вещи,
ешё раз ОГРОМНОЕ спасибо

Последний раз редактировалось avantyrist, 08.02.2015 в 16:02.
Ответить с цитированием
  #5 (permalink)  
Старый 08.02.2015, 16:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от avantyrist
я как понял указанный в конце this какраз и даёт возможность перебора в текущей строке ??
да
len количество ячеек до фильтраци
фильтруем ячейки сравнивая текст любой с эталоном text (я взял первую для эталона, вы вторую) -- смотрим сколько ячеек осталось после фильтрации -- если одинаково len == td =>true строке присвоится класс смотрите документацию на toggleClass http://api.jquery.com/toggleClass/#t...lassName-state
td сначала хранит все ячейки потом количество после фильтрации
Ответить с цитированием
  #6 (permalink)  
Старый 08.02.2015, 22:57
Интересующийся
Отправить личное сообщение для avantyrist Посмотреть профиль Найти все сообщения от avantyrist
 
Регистрация: 05.02.2015
Сообщений: 18

Понял практически всё
Тока вот я немогу понять одного момента никак, момент который меня изначально в ступор поставил:
Пытаясь посмотреть что td содержит в себе до фильтрации,
alert ("Переменная td до фильтрации --- " +td);

Вижу вот такой результат:
[object Object] - что оно такое ??
и никак не могу понять что ето означает О_о
можно каким то образом посмотреть-вывести содержимое td до фильтрации?? или надо просто условно понимать, что туда записались какието значения, но а в каком виде они там лежат ? куча вопросов

Последний раз редактировалось avantyrist, 08.02.2015 в 23:01.
Ответить с цитированием
  #7 (permalink)  
Старый 08.02.2015, 23:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

avantyrist,
это обьект jQuery
добавить console.log(td) в код нажать F12
Ответить с цитированием
  #8 (permalink)  
Старый 08.02.2015, 23:09
Интересующийся
Отправить личное сообщение для avantyrist Посмотреть профиль Найти все сообщения от avantyrist
 
Регистрация: 05.02.2015
Сообщений: 18

Вот за ето я туканул !!!
console.log
Я както думал что alert выводит тоже самое, Супер !!!!
рони агромная вам благодарность
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02