gpt4 book ai didi

javascript - 在函数中丢失全局值

转载 作者:行者123 更新时间:2023-11-30 08:15:40 26 4
gpt4 key购买 nike

想知道是否有人可以提供帮助。

基本上在 javascript 中,我试图在图像加载到页面之前获取图像的图像大小,这样我就可以在图库中动态调整一些缩略图的大小。

路径工作正常,预加载器工作正常,我可以看到在 getWidthAndHeight 函数中获取了宽度和高度。

我的问题是,我试图将其分配给一个全局变量以在其他函数中使用,但全局变量在 getWidthAndHeight 函数之外丢失了。 (我在文件开头声明了全局变量,例如 var gwidth)

我已经注意到了,但是当我把 alert(gwidth) 放在那里时,一切都有效!很明显,我没有触发警报框 - 知道为什么这只在警报出现时才有效,以及为什么当警报被禁用时全局可能会失去它的值(value)?

谢谢

function getWidthAndHeight() {
gwidth = this.width;
alert(gwidth);
gheight = this.height;
return true;
}
function loadFailure() {
alert("'" + this.name + "' failed to load.");
return true;
}




function getImgSize(gim_imgSrc)
{

var myImage = new Image();

myImage.name = gim_imgSrc;
myImage.onload = getWidthAndHeight;
myImage.onerror = loadFailure;
myImage.src = gim_imgSrc;

getWidthAndHeight(myImage);
alert("width is" + gwidth);
alert(testglobal);

return gwidth;

}

最佳答案

它不起作用,因为图像加载事件异步触发(即可能在您返回 gwidth 之后)。它在您发出警报时起作用,因为您将执行暂停几秒钟,从而为图像加载时间。

你可以尝试传递一个回调函数:

function getImgSize(gim_imgSrc, callback) {
var myImage = new Image();
myImage.src = gim_imgSrc;
myImage.onload = function() {
getWidthAndHeight();
callback(gwidth);
};
}

关于javascript - 在函数中丢失全局值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4510537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com