Установите флажки в одной ячейке в зависимости от содержимого в другой на том же уровне строки - PullRequest
0 голосов
/ 18 апреля 2020

Мне нужно предварительно установить флажки, чтобы я мог изменить их состояние. К сожалению, я не JavaScript парень.

l oop должен выглядеть примерно так

tick:
td.col-clipboard input.smallCheckboxes
if:
td.col-clipboard (last-child) contains "sometextstring"

Пожалуйста, помогите, в противном случае мне бы пришлось пометить около 2000 записей вручную.

Pure JS или Можно использовать прототип JavaScript framework (версия 1.7.1). Это более старый бэкэнд TYPO3.

Заранее большое спасибо!

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Prototype. js делает это довольно просто:

$$('td.col-clipboard input.smallCheckboxes').select(function(elm){
  return elm.up('tr').down('td:last-of-type').innerHTML.include('sometextstring')
}).invoke(writeAttribute, 'checked', 'checked');

Возможно, вы могли бы упростить его, сначала выбрав TR:

$$('tr').map(function(elm){
  if elm.innerHTML.include('sometextstring'){
    elm.down('input.smallCheckboxes').writeAttribute('checked', 'checked');
  }
});

Если у ваших TR есть имя класса или ваш Таблица имеет идентификатор, вы можете ограничить первоначальный выбор только теми, которые изменили внешний аргумент метода $$ (найти все с помощью CSS selector).

0 голосов
/ 18 апреля 2020

Я создал пример, который проверяет каждую строку таблицы и устанавливает все флажки в этой строке на true, если последняя ячейка в этой строке содержит предварительно определенную переменную:

const rows = Array.from(document.getElementsByTagName('tr'));
const str = 'sometextstring';

rows.forEach(row => {
  const cells = Array.from(row.cells);
  // Find last cell in this row
  const target = cells[cells.length - 1].innerHTML;
  // Compare str to the contents of the cell
  if (target === str) {
    // Set all checkboxes in this row to true except the last one
    for (let i = 0; i < cells.length - 1; i++) {
        cells[i].querySelector('input').checked = true;
    }
  }
})

Мой пример чувствителен к регистру.

Пожалуйста, найдите jsfiddle здесь: https://jsfiddle.net/sanderdebr/z23mfthc/34/

...