Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнение товаров opencart (подсветка различий) (https://javascript.ru/forum/misc/70914-sravnenie-tovarov-opencart-podsvetka-razlichijj.html)

killcomp 11.10.2017 13:37

Сравнение товаров opencart (подсветка различий)
 
Добрый день, есть скрипт
<script>
(function($){
  $(document).ready(function(){    
      var exc_arr = ["Наименование","Изображение","Цена","Модель","Рейтинг","Summary"];
      $(".table tbody tr").each(function(){
        var f = $(this).children("td").first().text();
        if( $.inArray(f,exc_arr) == -1 && f != "" ){
          var elm = $(this).children("td").map(function(){ return $(this).text(); });
          $(this).children("td").each(function(i){
            if( i != 0 && i != 1 ){
              if( elm[i] != elm[1]){ $(this).addClass("compare-diff"); }
            } 
          });
        }
      });    
  });
})(jQuery);
</script>

Он подсвечивает ячейки в таблице которые отличаются, а нужно подсветить всю строку tr
Я вообще ноль в JS подскажите пожалуйста

ksa 11.10.2017 13:51

Цитата:

Сообщение от killcomp
Он подсвечивает ячейки в таблице которые отличаются, а нужно подсветить всю строку tr

Значит класс нужно присваивать строке, а не ячейке... Наверняка еще сам селектор того класса придется менять как и его свойства...

рони 11.10.2017 14:08

killcomp,
(function($){
  $(document).ready(function(){
      var exc_arr = ["Наименование","Изображение","Цена","Модель","Рейтинг","Summary"];
      $(".table tbody tr").each(function(k, tr){
        var f = $(this).children("td").first().text();
        if( $.inArray(f,exc_arr) == -1 && f != "" ){
          var elm = $(this).children("td").map(function(){ return $(this).text(); });
          $(this).children("td").each(function(i){
            if( i != 0 && i != 1 ){
              if( elm[i] != elm[1]){ $(tr).addClass("compare-diff"); }
            }
          });
        }
      });
  });
})(jQuery);

killcomp 11.10.2017 14:08

Цитата:

Сообщение от ksa (Сообщение 467185)
Значит класс нужно присваивать строке, а не ячейке... Наверняка еще сам селектор того класса придется менять как и его свойства...

Понятно что класс нужно присваивать строке, как только это сделать? Че я только не менял в этом скрипте, ниче не получается.

По факту сравнить все td кроме первого и если есть отличия добавить класс к tr. Просто как это перевести все в код я не знаю. Ну и оставить функцию которая исключает столбцы которые не нужно сравнивать

killcomp 11.10.2017 14:10

Цитата:

Сообщение от рони (Сообщение 467188)
killcomp,
(function($){
  $(document).ready(function(){
      var exc_arr = ["Наименование","Изображение","Цена","Модель","Рейтинг","Summary"];
      $(".table tbody tr").each(function(k, tr){
        var f = $(this).children("td").first().text();
        if( $.inArray(f,exc_arr) == -1 && f != "" ){
          var elm = $(this).children("td").map(function(){ return $(this).text(); });
          $(this).children("td").each(function(i){
            if( i != 0 && i != 1 ){
              if( elm[i] != elm[1]){ $(tr).addClass("compare-diff"); }
            }
          });
        }
      });
  });
})(jQuery);

Спасибо дружище, все именно так как нужно!!!


Часовой пояс GMT +3, время: 03:39.