为什么函数参数需要这么长时间才能加载
Why does function parameter take so long to load?
这就是我的Javascript的样子:
function open_box(message){
var box_content = '<div id="overlay"><div id="box_frame"><div id="box">'+message+'<a href="javascript:reset_frame()"><div id="xbutton"><img src="elements/xbutton.png"></div></a></div></div></div>';
document.getElementById('functioner').innerHTML = box_content;
open_box('Why hello there');
}
当我在我的 JS 文件中填写"为什么你好"参数时,它会像 HTML 中一样打印。对于所有意图和目的,该函数都有效。唯一的问题是加载需要相当长的时间。有时我的浏览器要求停止操作。谁能向我解释为什么会这样?是否有任何潜在的优化途径?
编辑:我明白你们关于递归的观点。回过头来看,这是有道理的。这让我想到了另一个问题。
当直接移动到函数外部时,我的 HTML 不会确认我的"为什么你好"参数。要调用它的代码只是一个简单的<a href="javascript:open_box()">
。
我仍在尝试调用JS代码,因此请原谅新手错误。
你陷入了无限递归。 当第一次调用open_box
时,其中的最后一个语句是调用open_box
本身,这种情况无限发生。所以,要修复它,请更改
function open_box(message){
var box_content = '<div id="overlay"><div id="box_frame"><div id="box">'+message+'<a href="javascript:reset_frame()"><div id="xbutton"><img src="elements/xbutton.png"></div></a></div></div></div>';
document.getElementById('functioner').innerHTML = box_content;
open_box('Why hello there');
}
自
function open_box(message){
var box_content = '<div id="overlay"><div id="box_frame"><div id="box">'+message+'<a href="javascript:reset_frame()"><div id="xbutton"><img src="elements/xbutton.png"></div></a></div></div></div>';
document.getElementById('functioner').innerHTML = box_content;
}
open_box('Why hello there');
这是因为递归,函数一遍又一遍地调用自己
每次函数调用其自身时,它都会更改 DOM,然后再次调用其自身,最终导致堆栈溢出错误。
将open_box('Why hello there');
移动到函数的外侧,如下所示:
function open_box(message){
var box_content = '<div id="overlay"><div id="box_frame"><div id="box">'+message+'<a href="javascript:reset_frame()"><div id="xbutton"><img src="elements/xbutton.png"></div></a></div></div></div>';
document.getElementById('functioner').innerHTML = box_content;
}
//Moved to outside the function
open_box('Why hello there');
有关递归的更多信息:http://en.wikipedia.org/wiki/Recursion
此外,如果您查看控制台(F12,然后在chrome中查看控制台),您应该看到以下内容: 超出最大调用堆栈大小错误
相关文章:
- 对于加载时间过长的循环来说是巨大的
- 指令加载真的很长,检查加载时间的方法
- 如何使用队列呈现多个HighCharts以防止加载时间过长
- Javascript加载时间过长
- 在正确的时间加载缓存的字体
- mobile.加载时间过长,无法显示
- 如何为未加载、加载时间过长和被阻止的css文件编写回退
- 应用在生产中加载时间过长
- 为什么函数参数需要这么长时间才能加载
- Drupal 视图加载时间太长
- 为什么将数据加载到流星集合中需要这么长时间
- 在特定时间加载网站的部分内容
- audio.js:是否可以在特定时间加载音频
- 我怎么能得到不同的部分/框/图像我的网站在同一时间加载
- MVC淘汰.儿童下载列表没有't第一时间加载模型数据
- 三星智能电视时间加载问题
- 包括花很长时间加载,你可以看到他们加载
- JavaScript:为表单添加时间加载功能
- IE:HTML选择与巨大的选项需要大量的时间加载
- Angularjs下拉多选需要很长时间加载