递归太多了(Too much recursion)

编程入门 行业动态 更新时间:2024-10-17 18:20:16
递归太多了(Too much recursion)

任何人都可以告诉我循环来自哪里?

JS:

if (zahl > 1) { document.getElementById('makroclickm2').innerHTML = data_split[zahlm2]; document.getElementById('makroclickm2').onclick = getwords(zahlm2++); } else { document.getElementById('makroclickm2').innerHTML = ""; document.getElementById('makroclickm2').onclick = ""; } if (zahl > 0) { document.getElementById('makroclickm1').innerHTML = data_split[zahlm1]; document.getElementById('makroclickm1').onclick = getwords(zahlm1++); } else { document.getElementById('makroclickm1').innerHTML = ""; document.getElementById('makroclickm1').onclick = ""; } document.getElementById('makroclick').innerHTML = data_split[zahl]; document.getElementById('makroclick').onclick = getwords(zahl++); document.getElementById('makroclickp1').innerHTML = data_split[zahlp1]; document.getElementById('makroclickp1').onclick = getwords(zahlp1++); if (typeof(data_split[zahlp1]) == "undefined") { document.getElementById('makroclickp1').innerHTML = ""; document.getElementById('makroclickp1').onclick = ""; } document.getElementById('makroclickp2').innerHTML = data_split[zahlp2]; document.getElementById('makroclickp2').onclick = getwords(zahlp2++); if (typeof(data_split[zahlp2]) == "undefined") { document.getElementById('makroclickp2').innerHTML = ""; document.getElementById('makroclickp2').onclick = ""; }

HTML:

<div id="makroclickm2" onclick="" class="makroclick"></div> <div id="makroclickm1" onclick="" class="makroclick"></div> <div id="makroclick" onclick="getwords(0);" class="makroclick_center"></div> <div id="makroclickp1" onclick="getwords(1);" class="makroclick"></div> <div id="makroclickp2" onclick="getwords(2);" class="makroclick"></div>

(不完整代码)该函数在onload上调用一次。

Thx提前!

can anyone tell me where the loop comes from?

JS:

if (zahl > 1) { document.getElementById('makroclickm2').innerHTML = data_split[zahlm2]; document.getElementById('makroclickm2').onclick = getwords(zahlm2++); } else { document.getElementById('makroclickm2').innerHTML = ""; document.getElementById('makroclickm2').onclick = ""; } if (zahl > 0) { document.getElementById('makroclickm1').innerHTML = data_split[zahlm1]; document.getElementById('makroclickm1').onclick = getwords(zahlm1++); } else { document.getElementById('makroclickm1').innerHTML = ""; document.getElementById('makroclickm1').onclick = ""; } document.getElementById('makroclick').innerHTML = data_split[zahl]; document.getElementById('makroclick').onclick = getwords(zahl++); document.getElementById('makroclickp1').innerHTML = data_split[zahlp1]; document.getElementById('makroclickp1').onclick = getwords(zahlp1++); if (typeof(data_split[zahlp1]) == "undefined") { document.getElementById('makroclickp1').innerHTML = ""; document.getElementById('makroclickp1').onclick = ""; } document.getElementById('makroclickp2').innerHTML = data_split[zahlp2]; document.getElementById('makroclickp2').onclick = getwords(zahlp2++); if (typeof(data_split[zahlp2]) == "undefined") { document.getElementById('makroclickp2').innerHTML = ""; document.getElementById('makroclickp2').onclick = ""; }

HTML:

<div id="makroclickm2" onclick="" class="makroclick"></div> <div id="makroclickm1" onclick="" class="makroclick"></div> <div id="makroclick" onclick="getwords(0);" class="makroclick_center"></div> <div id="makroclickp1" onclick="getwords(1);" class="makroclick"></div> <div id="makroclickp2" onclick="getwords(2);" class="makroclick"></div>

(Not complete Code) The function is called once onload.

Thx in advance!

最满意答案

在这样的行:

document.getElementById('makroclickm2').onclick = getwords(zahlm2++);

您将onclick处理程序分配给getwords(zahlm2++)的结果 ,而不是该函数本身。

如果,正如我怀疑的那样,上面的代码实际上是getwords函数,这意味着它正在调用自身(递归)。

相反,写:

document.getElementById('makroclickm2').onclick = function() { getwords(zahlm2++); }

In the lines like this:

document.getElementById('makroclickm2').onclick = getwords(zahlm2++);

You're assigning the onclick handler to the result of getwords(zahlm2++), not to that function itself.

If, as I suspect, the code above actually is the getwords function, that means it's calling itself (recursively).

Instead, write:

document.getElementById('makroclickm2').onclick = function() { getwords(zahlm2++); }

更多推荐

本文发布于:2023-08-07 15:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1464550.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:递归   太多了   recursion

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!