我的函数中有值,但它没有定义。

这是我的代码:

<img onload="getFullnameDetails(263,225)" src="'+getBaseURL()+'js/check/no-image.png" rel="fullname" />

function getFullnameDetails(mainHeight,upperstyle){
setTimeout("fullnameCenter(mainHeight,upperstyle)",2000);
}

function fullnameCenter(mainHeight,upperstyle){
    var distOfMainAndUpper = 38;
    var mainHalfHeight = 131.5;
    var imageHeight = jQuery("img[rel='fullname']").height(); //there is a delay
    var imageHalfHeight = imageHeight/2;
    var fromImageTopToMainHalf = mainHalfHeight - imageHeight;
    var position = imageHalfHeight+fromImageTopToMainHalf-distOfMainAndUpper;
    jQuery(".test1").css("bottom",position+"px");
}


它在这里说mainHeight没有定义。为什么会这样呢?
这发生在以下行:setTimeout("fullnameCenter(mainHeight,upperstyle)",2000);

提前致谢 ;)

最佳答案

设置超时时,它在全局范围内运行,因此mainHeight和upperstyle不再在范围内。您最好使用匿名函数并提供参数:

setTimeout(function() {
    fullnameCenter(mainHeight,upperstyle);
}, 2000);

关于javascript - 在javascript/jquery中具有参数的函数将不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6976989/

10-09 15:12