Моя веб-страница, которую я сделал, не останавливает выполнение кода через некоторое время l oop (или по какой-либо другой причине) в JavaScript, что приводит к тому, что веб-страница не загружается - PullRequest
0 голосов
/ 13 февраля 2020

Веб-страница, которую я создал для проверки количества возможных 3 ди git чисел, используя только цифры 1 - 6 в порядке от наименьшего до наибольшего, не загружается. Я предполагаю, что это из-за ошибки в то время как я oop Я вставил код ниже. Я пытался создать что-то, что возвращает то же значение, что и строка объекта {a: 4, b: 5, c: 6}, но это не сработало. Я попытался использовать строку «a: 4, b: 5, c: 6», и она не сработала.

    var n = 0;
    var o = {a:1, b:2, c:3};
    var i = [o.a, o.b, o.c];
    var s = i.sort(function(a, b) {
        return a - b;
    });
    while (o != {a:4, b:5, c:6}) {
        o.c++;
        i = [o.a, o.b, o.c];
        if (o.c = 7) {
            o.c = 1;
            o.b++;
        }
        if (o.b = 7) {
            o.b = 1;
            o.a++
        }
        if (i == s && o.a != o.b && o.a != o.c) {
            n++;
            document.getElementById('a').innerHTML = n;
        }
    }

Кроме того, предложенный кем-то вопрос отличается от моего вопроса. Я спрашиваю, почему страница не загружается и как это исправить, пока l oop, другой человек предложил, почему два пустых объекта не совпадают.

1 Ответ

0 голосов
/ 13 февраля 2020

Кроме того, вопрос, который кто-то предложил, отличается от моего вопроса. Я спрашиваю, почему страница не загружается и как это исправить, пока l oop, другой человек предложил, почему два пустых объекта не совпадают.

Это действительно одно и то же. В вашем коде вы продолжаете l oop, когда o != {a:4, b:5, c:6}. Дело в том, что это условие НЕ МОЖЕТ быть ложным. Так что l oop обречен на go навсегда.

На ваш вопрос «почему страница не загружается» ответ прост: JavaScript выполнение кода блокирует рендеринг страницы , Таким образом, страница не может отображаться во время выполнения вашего кода. Ваш код не останавливается, поэтому вы никогда ничего не увидите. Мы могли бы долго обсуждать, как отложить вычисления после рендера, но это может быть так просто:

function theCodeYouPosted() {
}

// this will delay execution of your code for 100 milliseconds,
// so the page could render.
setTimeout(function() {
  theCodeYouPosted();
}, 100);

Это один из многих, многих возможных обходных путей, но это не решение для вашего основного проблема в том, что ваш l oop не выходит.

Вам нужно условие, которое действительно проверяет равенство 3 значений, которые вы ищете. Пожалуйста, внимательно прочитайте комментарии: я знаю, что вы стремитесь «решить свою проблему», но это неправильный подход. Вам нужно понять вашу проблему. Тогда ваша проблема решится сама собой.

Вам нужно сравнить свойство по свойству, например:

while(!(o.a === 4 && o.b === 5 && o.c === 6)) {
  ...
}

, но я думаю в вашем коде несколько проблем , Вы должны попробовать свой отладчик и понять, как работает код, который вы написали.

Самый простой способ - нажать F12 в вашем браузере и вставить оператор debugger непосредственно перед кодом, который вы хотите понять.

Бон Вояж!

...