[英]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.