JavaScript抛出错误 - 循环中的代码不起作用

Ste*_*tch -1 html javascript loops

JavaScript似乎并不"喜欢"我的代码...它只是说:InternalError: too much recursion
我正在从浏览器控制台执行代码
所以......你有什么建议吗?
这是代码:

lol();
var lol = function () {
    if (document.getElementById('workarea').getElementsByClassName('question')[0].getElementsByClassName('graphie')[0].getElementsByClassName('graphie-label')[0].getElementsByClassName('katex-holder')[0].getElementsByClassName('katex')[0].getElementsByClassName('katex-inner')[0].getElementsByClassName('base textstyle uncramped')[0].getElementsByClassName('sizing reset-size5 size10 mord')[0].getElementsByClassName('mord textstyle uncramped')[0].getElementsByClassName('mord')[0].innerHTML == '<span class="mclose">?</span>') {
        var l = document.getElementById('workarea').getElementsByClassName('question')[0].getElementsByClassName('graphie')[0].getElementsByClassName('graphie-label')[0].getElementsByClassName('katex-holder')[0].getElementsByClassName('katex')[0].getElementsByClassName('katex-inner')[0].getElementsByClassName('base textstyle uncramped')[0].getElementsByClassName('sizing reset-size5 size10 mord')[0].getElementsByClassName('mord textstyle uncramped')[0].getElementsByClassName('mord')[2].innerHTML;
    } else {
        var l = document.getElementById('workarea').getElementsByClassName('question')[0].getElementsByClassName('graphie')[0].getElementsByClassName('graphie-label')[0].getElementsByClassName('katex-holder')[0].getElementsByClassName('katex')[0].getElementsByClassName('katex-inner')[0].getElementsByClassName('base textstyle uncramped')[0].getElementsByClassName('sizing reset-size5 size10 mord')[0].getElementsByClassName('mord textstyle uncramped')[0].getElementsByClassName('mord')[0].innerHTML;
    }
    var ll = document.getElementById('workarea').getElementsByClassName('question')[0].getElementsByClassName('graphie')[0].getElementsByClassName('graphie-label')[0].getElementsByClassName('katex-holder')[0].getElementsByClassName('katex')[0].getElementsByClassName('katex-inner')[0].getElementsByClassName('base textstyle uncramped')[0].getElementsByClassName('sizing reset-size5 size10 mord')[0].getElementsByClassName('mord textstyle uncramped')[0].getElementsByClassName('mord')[1].innerHTML;
    var sum = parseInt(l) + parseInt(ll);
    document.getElementById('answercontent').getElementsByClassName('fancy-scrollbar solutionarea')[0].getElementsByTagName("input")[0].setAttribute("value", sum);
    document.getElementById('check-answer-button').removeAttribute("disabled");
    setInterval(lol(), 100000);
}  
Run Code Online (Sandbox Code Playgroud)

编辑1:对于凌乱的代码抱歉,我对js很新.

scr*_*gar 6

setInterval(lol(),100000); 立即执行lol,并延迟返回值的执行.

使用

 setInterval(lol, 100000);
Run Code Online (Sandbox Code Playgroud)

代替.

虽然我们正处于这种状态,但你要做一个相当昂贵的链接来多次找到相同的元素,使用变量来存储你的引用:

lol();
var lol = function () {
    var q1 = document.getElementById('workarea').getElementsByClassName('question')[0];
    var katex = q1.getElementsByClassName('graphie')[0].getElementsByClassName('graphie-label')[0].getElementsByClassName('katex-holder')[0].getElementsByClassName('katex')[0];
    var mords = katex.getElementsByClassName('katex-inner')[0].getElementsByClassName('base textstyle uncramped')[0].getElementsByClassName('sizing reset-size5 size10 mord')[0].getElementsByClassName('mord textstyle uncramped')[0].getElementsByClassName('mord');
    var input =  document.getElementById('answercontent').getElementsByClassName('fancy-scrollbar solutionarea')[0].getElementsByTagName("input")[0];

    var l;

    if (mords[0].innerHTML == '<span class="mclose">?</span>') {
        l = mords[2].innerHTML;
    } else {
        l = mords[0].innerHTML;
    }
    var ll = mords[1].innerHTML;
    var sum = parseInt(l) + parseInt(ll);
    input.setAttribute("value", sum);
    document.getElementById('check-answer-button').removeAttribute("disabled");

    setInterval(lol, 100000);
}
Run Code Online (Sandbox Code Playgroud)