Задать вопрос
@aLeXxX_03

Почему зависает приложение? Почему не работает функция сортировки?

let button = document.createElement('button');
button.textContent = 'Добавить товар';
button.style.background = '#228B22';
button.style.width = '130px';

let container = document.getElementById('myDiv');
container.append(button);

let arr = ['Арбуз', 'Книга', 'Кофе', 'Макароны', 'Молоко', 'Сахар', 'Яблоки'];
let listEL;

function renderList(arr, bookSearch) {
  if (listEL) listEL.remove();
  listEL = document.createElement('ul');
  for (i = 0; i < arr.length; i++) {
    const liEl = document.createElement('li');
    liEl.textContent = `${i + 1}) ${arr[i]}`;
    if (arr[i] === bookSearch) {
      liEl.style.width = '17%';
      liEl.style.background = 'yellow';
      liEl.style.margin = '0 0 0 12px ';
      liEl.style.padding = '7px';
    }
    listEL.append(liEl);
  }

  container.append(listEL);
}
renderList(arr);

function sort(arr) {
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length - 1; i++) {
      if (arr[j] > arr[j + 1]) {
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
}

button.onclick = function book() {
  let book = prompt('Введите название книги');
  if (book === '') {
    alert('Название книги не введено!');
  }
  arr.push(book);
  sort(arr);
  renderList(arr);
};

Почему не работает функция сортировки sort(arr); ? Нужно, чтобы товары добавлялись в список и сортировались в алфавитном порядке.

Когда нажимаю кнопку "Добавить товар", вызывается функция Prompt, то при вводе имени товара и нажатии кнопки "Ок" или "Отмена" приложение намертво зависает.
Что я сделал не так?
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
for (let j = 0; j &lt; arr.length - 1; i++) — вот баг: i++ вместо j++. j не инкрементируется, внутренний цикл вечный, отсюда зависание.

p.s. в renderList переменная i без let — глобальная, потенциально тоже стрельнёт
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы