Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Изменить класс в зависимости от содержимого ячейки (https://javascript.ru/forum/dom-window/81161-izmenit-klass-v-zavisimosti-ot-soderzhimogo-yachejjki.html)

demiancz 10.10.2020 14:57

Изменить класс в зависимости от содержимого ячейки
 
Есть таблица
Код:

<table width="100%" border="1">
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Да</td>
  </tr>
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Нет</td>
  </tr>
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Нет</td>
  </tr>
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Да</td>
  </tr>
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Да</td>
  </tr>
</table>

Нужно поменять class"oprosresult" в зависимости от значения ячейки. то есть если в ячейке записано "Да", то нужно присвоить этой ячейке class"oprosresult-yes", а если в ячейке "нет", то - class"oprosresult-no"

Я в JS не силен.

Если логически, то понимаю, что нужно получить данные ячеек. Проверить их. И записать в переменную. А потом эту переменную подставлять вместо class"oprosresult".

Нашел пример как получить значение ячейки
<div class="value">f</div>

Код:

<script>
var tar = document.querySelector('.oprosresult')
var val = document.querySelector('.value')
val.innerHTML = tar.innerHTML
 </script>

но так я получаю только значение одной ячейки

Nexus 10.10.2020 15:01

У вас в html ошибка, после названия атрибута не стоит знак «=» (равно).

<table width="100%" border="1">
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Да</td>
  </tr>
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Нет</td>
  </tr>
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Нет</td>
  </tr>
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Да</td>
  </tr>
  <tr>
    <td>Текст</td>
    <td class="oprosresult">Да</td>
  </tr>
</table>

<style>
.oprosresult-yes {
     color: green;
}

.oprosresult-no {
     color: red;
}
</style>

<script>
document.querySelectorAll('.oprosresult').forEach(node => {
     node.classList.add('oprosresult-' + (node.textContent === 'Да' ? 'yes' : 'no'));
});
</script>

demiancz 10.10.2020 15:08

Спасибо огромное


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