尝试用javascript创建一个函数来放大图像
Trying to make a function with javascript to enlarge an image
我有这个函数:
function zoomImage(i, image, currentWidth, currentHeight, targetWidth, targetHeight){
var widthStep = (targetWidth - currentWidth) / 100;
var heightStep = (targetHeight - currentHeight) / 100;
var newWidth = Math.ceil( currentWidth + i * widthStep );
var newHeight = Math.ceil( currentHeight + i * heightStep );
i++;
var imageZ = document.getElementById(image);
imageZ.style.width = newWidth+"px";
imageZ.style.height = newHeight+"px";
while( i <= 100 )
t = setTimeout("zoomImage(i, image, currentWidth, currentHeight, targetWidth, targetHeight)",10);
}
像这样调用:
zoomImage(0, "image1", 200, 150, 260, 195);
但由于某些原因,页面不会停止加载并最终崩溃。图像也不会变大。我哪里做错了?
我假设您在函数外部初始化了i
。这就是i
,当你进行递归调用时,总是被传递进来。这是因为当您给setTimeout
一个字符串时,它是在全局作用域中求值的。
这意味着函数中的i++
只影响局部的i
,而不影响全局的i
,所以i
是永不递增递增不超过1 +全局值。
传递一个调用递归调用的匿名函数。这样你实际上传递的是递增的i
。
while( i <= 100 )
setTimeout(function() {
zoomImage(i, image, currentWidth, currentHeight, targetWidth, targetHeight);
},10);
当然,正如评论中所指出的,while
在这里似乎不是正确的选择。
相关文章:
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟