Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 克隆HTML元素时出现最大调用堆栈错误_Javascript_Jquery_Recursion - Fatal编程技术网

Javascript 克隆HTML元素时出现最大调用堆栈错误

Javascript 克隆HTML元素时出现最大调用堆栈错误,javascript,jquery,recursion,Javascript,Jquery,Recursion,我正在用JavaScript做一个代码。有一个非常简单的HTML标记,它的超级父对象被输入到创建ticker的函数中。该函数基本上会多次(递归地)克隆.ticker internal,并一个接一个地追加,直到其父项的宽度等于或大于窗口宽度 但是,如果我将这些函数从SU对象移动到窗口范围,它们工作正常,但现在它抛出了最大的调用堆栈错误 var SU={ createTicker:函数(TickerRapper){ var tickers=tickerWrapper.find('.tickers')

我正在用JavaScript做一个代码。有一个非常简单的HTML标记,它的超级父对象被输入到创建ticker的函数中。该函数基本上会多次(递归地)克隆
.ticker internal
,并一个接一个地追加,直到其父项的宽度等于或大于窗口宽度

但是,如果我将这些函数从SU对象移动到窗口范围,它们工作正常,但现在它抛出了最大的调用堆栈错误

var SU={
createTicker:函数(TickerRapper){
var tickers=tickerWrapper.find('.tickers'),
child=tickers.find('.tickerinternal');
SU.BuildTickerChildrenceles(股票、儿童);
},
BuildTickerChildRecones:函数(tickers,child){
var tickerWidth=parseInt(tickers.outerWidth(),10);
var windowWidth=jQuery(window).width();

如果在
buildtickerwidth
方法中(tickerWidth+35,则将
outerWidth
设置为较小的值以创建退出条件

那么在这一行呢,

var tickerWidth = parseInt(tickers.outerWidth(), 10);
ticketWidth
总是会在每次
buildticketrchildrenclones
调用中给出相同的值

该函数基本上可以多次克隆.ticker内部 (递归)并一个接一个地追加,直到其父级 宽度变为等于或大于窗口宽度

因此,您需要检查其父项的
外径,而不是检查股票代码的
外径

var tickerWidth = parseInt(tickers.parent().outerWidth(), 10);

只要
标记器
的设计不是为了将自己包装到下一行,这应该是可行的。

该错误意味着由于
buildTickerChildrences()的递归,您已经创建了一个无限循环
函数。如果该函数中的
条件从未丢失,您需要确定为什么该函数中的
条件从未丢失。您没有包含一个工作示例,甚至没有包含HTML/CSS,因此我们无法帮助您实现这一点。我知道它是无限的,但我猜在添加clonest后,标记宽度不会更新,这似乎是合乎逻辑的,尽管没有e可以给你一个明确的答案,你所展示的信息的缺乏。