Как можно обновить код JavaScript, чтобы удалять все элементы списка li, имеющие максимальное значение, а не только один?
Для удаления элемента списка 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; });