morto
@morto
вечный ученик

Почему бесконечно вызывается функция?

Здравствуйте, вывожу из json полученного через ajax в таблицу html, а так же еще есть фильтрация по myArray.price. При вводе в фильтр от 0 до 0 выводить таблицу полностью, при пустых инпутах выводить, что таких значений нет.
Функция consoleLog(), которая отвечает и за фильтр и за построение таблицы вызывается на клик по кнопке. Фильтр работает более-менее, кроме одного момента - если из-за фильтра не выводится ни одного значения, то функция зацикливается. Как это исправить?

<input type="text" id="start" value="0">
    <input type="text" name="" id="end" value="0">
    <button type="button" id="btn" >Обновить</button>

    <div id="error"></div>
    <table id="table">


    </table>


var myArray;
        async function getJson() {
            const res = await fetch('ссылка')
            myArray = await res.json();
            //  = JSON.stringify(good);
        }

        async function consoleLog() {

            await getJson();
            console.log(myArray[0].name);
            var startValue = document.getElementById('start').value;
            var endValue = document.getElementById('end').value;
            var div = document.getElementById('error');
            var count = 0;
            div.innerHTML = '';
            if (!endValue && !startValue) {
                console.log('pampam');
                document.getElementById('table').innerHTML = '';

                div.innerHTML = " Заданных значений в таблице нет ";
                return false;
            }
            document.getElementById('table').innerHTML = '<tr><td>ID</td > <td>Имя</td><td>Количество</td><td>Цена</td><td>Сумма</td> </tr > ';

            for (let i = 0; i < myArray.length; i++) {

                let summ = myArray[i].quantity * myArray[i].price;
                if (startValue == '0' && endValue == '0') {
                    document.getElementById('table').innerHTML +=
                        " <tr> <td>" + i + "</td> <td>" + myArray[i].name + "</td> <td>" + myArray[i].quantity + "</td> <td>" + myArray[i].price + "</td> <td>" + summ + "</td> </tr> ";
                    count++;
                }
                else if (startValue <= myArray[i].price && myArray[i].price <= endValue) {
                    document.getElementById('table').innerHTML +=
                        " <tr> <td>" + i + "</td> <td>" + myArray[i].name + "</td> <td>" + myArray[i].quantity + "</td> <td>" + myArray[i].price + "</td> <td>" + summ + "</td> </tr> ";
                    count++;
                }



            }
            if (count == '0') {
                consoleLog(count);
                document.getElementById('table').innerHTML = '';
                div.innerHTML = " Заданных значений в таблице нет ";
                count++;
            }
            return false;
}
btn.onclick = function () {
            consoleLog();
        }
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы