繁体   English   中英

JavaScript引发错误-循环中的代码不起作用

[英]JavaScript throws an error - Code in a loop doesn't work

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);
}  

编辑1:对不起,代码杂乱,我对js很陌生。

setInterval(lol(),100000); 立即执行大声笑,并延迟返回值的执行。

采用

 setInterval(lol, 100000);

代替。

在进行此操作时,您需要进行大量昂贵的链接才能多次找到相同的元素,并使用变量存储引用:

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM