【发布时间】:2017-04-01 04:12:33
【问题描述】:
我遇到了一个 Javascript 函数的问题,该函数显然被调用得太早了。我有预感这是一个吊装问题,但我不确定。
所以,我有一个分配给onclick 的<img> 的函数:
function setModalPicture(picName){
//Build the path to the picture
var pic= 'assets/img/art/'+picName;
//Set the picture
$('#g-modal-img').attr('src', pic);
adjustModalPadding();
}
意图是将#g-modal-img 的src 属性设置为img,然后才应调用adjustModalPadding。这是因为adjustModalPadding 需要#g-modal-img 的高度,在src 设置为<img> 之前为零。但是,我注意到这不能正常工作,如果我让adjustModalPadding 将#g-modal-img 的高度记录到控制台,它显示为零。我认为这意味着该函数在 src 设置为<img> 之前被调用。
【问题讨论】:
-
问题是图像的尺寸在图像成功加载之前是未知的。您需要为图像添加一个
onload侦听器。有关重复问题,请参阅 stackoverflow.com/a/626505/1902010。 -
吊装不会很快执行你的功能。
-
而 JavaScript 是一种“常规”编程语言。
-
我并不是故意不尊重 Javascript。 :) 我认为这是一个提升问题,并且由于我在 Javascript 之前从未见过提升,因此从这个意义上说,它对我来说不是一种“常规”语言。没有冒犯的意思。 :)
-
另外,当然是关于图像尚未加载的问题!抱歉,没有考虑清楚。我实际上在教程中看到了类似的东西,但我一生都记不起那里是如何处理的。
标签: javascript hoisting