Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Выделение отличающихся характеристик в сравнении товаров


Recommended Posts

1 минуту назад, WIXVW сказал:

Привет. Подскажите, как можно в таблице сравнения товаров выделить строки или сами характеристики, которые отличаются? 

черным или красным.

а если серьезно- писать сравнение

Надіслати
Поділитися на інших сайтах


Попробуйте вот этот скрипт:

<script>
function compareDiff() {
data_collection = $('#product-compare tbody:not(:first):not(:last) tr');
$(data_collection).each(function() {
	line = $(this).find('td:not(:first)');
	$(line).each(function() {
		val = $(this).text();
		$('td:contains(' + val + ')').filter(function() { return $(this).text() == val && $(this).text() != ''; }).toggleClass("highlighted");
	})
})}
</script>

 

Надіслати
Поділитися на інших сайтах


13 часов назад, Waskadagama сказал:

Попробуйте вот этот скрипт:


<script>
function compareDiff() {
data_collection = $('#product-compare tbody:not(:first):not(:last) tr');
$(data_collection).each(function() {
	line = $(this).find('td:not(:first)');
	$(line).each(function() {
		val = $(this).text();
		$('td:contains(' + val + ')').filter(function() { return $(this).text() == val && $(this).text() != ''; }).toggleClass("highlighted");
	})
})}
</script>

 

 

Не хочет :( 
Вроде ж все правильно, прошелся глазами по каждому шагу, проверил id, но класс не переключается

Надіслати
Поділитися на інших сайтах


14 часов назад, Waskadagama сказал:

Попробуйте вот этот скрипт:


<script>
function compareDiff() {
data_collection = $('#product-compare tbody:not(:first):not(:last) tr');
$(data_collection).each(function() {
	line = $(this).find('td:not(:first)');
	$(line).each(function() {
		val = $(this).text();
		$('td:contains(' + val + ')').filter(function() { return $(this).text() == val && $(this).text() != ''; }).toggleClass("highlighted");
	})
})}
</script>

 

 

Закинул все на codepen.io - тоже не работает:
https://codepen.io/WIXVW/pen/abmQJMq

Надіслати
Поділитися на інших сайтах


Вот так работает:

function compareDiff() {
data_collection = $('#product-compare tbody:not(:first):not(:last) tr');
$(data_collection).each(function() {
	line = $(this).find('td:not(:first)');
	$(line).each(function() {
		val = $(this).text();
    $('td:contains(' + val + ')').filter(function() { return $(this).text() == val && $(this).text() != ''; }).toggleClass("highlighted");
	})
})}
compareDiff();

P.S. Этот скрипт работает на стандартной теме OpenCart, под вашу, возможно, нужно сделать адаптацию.

Змінено користувачем Waskadagama
Надіслати
Поділитися на інших сайтах


1 час назад, Waskadagama сказал:

Вот так работает:


function compareDiff() {
data_collection = $('#product-compare tbody:not(:first):not(:last) tr');
$(data_collection).each(function() {
	line = $(this).find('td:not(:first)');
	$(line).each(function() {
		val = $(this).text();
    $('td:contains(' + val + ')').filter(function() { return $(this).text() == val && $(this).text() != ''; }).toggleClass("highlighted");
	})
})}
compareDiff();

P.S. Этот скрипт работает на стандартной теме OpenCart, под вашу, возможно, нужно сделать адаптацию.

 

я сделал так:

function compareCellValues() {

  var rows = $("#product-compare").find("tbody:not(:first):not(:last) tr"); 

  rows.each(function() { 

    var thisRow = $(this), 
        tds = thisRow.find('td:not(:first)'),
        i,
        j,
        tdsl = tds.length;
    for(i = 0; i < tdsl; i++){
      for(j = i + 1; j < tdsl; j++) {
         var thisTd = tds[i],
             thatTd = tds[j],
             thisTdText = $(thisTd).text(),
             thatTdText = $(thatTd).text();
            if (thisTdText !== thatTdText) {
      thisRow.addClass('highlighted');
    }
      }
    }
  });

}

window.onload = compareCellValues();

работает как я и хотел

Надіслати
Поділитися на інших сайтах


3 часа назад, Waskadagama сказал:

Вот так работает:


function compareDiff() {
data_collection = $('#product-compare tbody:not(:first):not(:last) tr');
$(data_collection).each(function() {
	line = $(this).find('td:not(:first)');
	$(line).each(function() {
		val = $(this).text();
    $('td:contains(' + val + ')').filter(function() { return $(this).text() == val && $(this).text() != ''; }).toggleClass("highlighted");
	})
})}
compareDiff();

P.S. Этот скрипт работает на стандартной теме OpenCart, под вашу, возможно, нужно сделать адаптацию.

 

Кстати, с этим скриптом получается прикольно, что выделяется не строка, а только тот td, в котором отличается текст,

но плохо, что, если текст везде одинаковый, то выделяются все ячейки

Надіслати
Поділитися на інших сайтах


  • 3 years later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.