Как удалить элемент из списка ul, который имеет наибольшее значение при нажатии на кнопку?

Как можно обновить код JavaScript, чтобы удалять все элементы списка li, имеющие максимальное значение, а не только один?
  • 18 июля 2024 г. 12:13
Ответы на вопрос 2
Для удаления элемента списка ul с наибольшим значением при нажатии на кнопку можно использовать следующий JavaScript код:

```javascript
document.querySelector('button').addEventListener('click', function() {
  let ul = document.querySelector('ul');
  let lis = ul.querySelectorAll('li');
  
  let max = -Infinity;
  let maxLi = null;
  
  lis.forEach(function(li) {
    let value = parseInt(li.textContent);
    
    if (value > max) {
      max = value;
      maxLi = li;
    }
  });
  
  if (maxLi) {
    ul.removeChild(maxLi);
  }
});
```

Чтобы обновить код, чтобы удалялись все элементы списка li с максимальным значением, можно использовать следующий JavaScript код:

```javascript
document.querySelector('button').addEventListener('click', function() {
  let ul = document.querySelector('ul');
  let lis = ul.querySelectorAll('li');
  
  let max = -Infinity;
  
  lis.forEach(function(li) {
    let value = parseInt(li.textContent);
    
    if (value > max) {
      max = value;
    }
  });
  
  lis.forEach(function(li) {
    if (parseInt(li.textContent) === max) {
      ul.removeChild(li);
    }
  });
});
```

Этот обновленный код будет удалять все элементы списка li, имеющие максимальное значение при нажатии на кнопку.
При повторном нажатии на кнопку максимальным числом выскакивает число удалённого li.

Как и должно быть. Кто вам обещал, что вызов метода remove приведёт к исчезновению элемента из lis ? Надо искать максимальный элемент среди тех, что всё ещё присутствуют на странице, а не тех, что были изначально.

function max(data, key = n => n) {
  const getVal = key instanceof Function ? key : n => n[key];
  let result = [ void 0, -Infinity ];

  for (const n of data) {
    const val = getVal(n);
    if (result[1] < val) {
      result = [ n, val ];
    }
  }

  return result[0];
}

document.querySelector('button').addEventListener('click', e => {
  const items = document.querySelector('ul').children;
  max(items, n => +n.textContent)?.remove();
  e.target.disabled = !items.length;
});
Похожие вопросы