【发布时间】:2015-08-14 11:46:39
【问题描述】:
我在通过 javascript 对 img 元素执行更改时遇到问题:
我构建了一个框架,通过键盘的箭头键循环浏览不同的图像。为此,我将所有图像 url 加载到一个数组中,然后相应地更改 img 元素的 src 属性。
到目前为止一切正常。但是现在我想显示当前图像的 naturalHeight 和 naturalWidth 。不幸的是,当我循环浏览图像时,会显示当前图像之前的图像大小,尽管元素显示了正确的图像。
这与加载顺序和渲染有关吗?
如果有人能在这个问题上帮助我,我将非常感激。
最好的问候
最大
在 cmets 上:
我只是通过以下方式加载图像:
imageLeft.setAttribute("src", imagesOld[rowCounter]);
imageRight.setAttribute("src", imagesNew[rowCounter]);
我有一个更新尺寸信息的功能:
function updateSizeInformation() {
var imageLeftX = $find("<%= txtXImageLeft.ClientID %>");
var imageLeftY = $find("<%= txtYImageLeft.ClientID %>");
var imageRightX = $find("<%= txtXImageRight.ClientID %>");
var imageRightY = $find("<%= txtYImageRight.ClientID %>");
var imageLeft = document.getElementById("imageLeft");
var imageRight = document.getElementById("imageRight");
imageLeftX.set_value(imageLeft.naturalWidth);
imageLeftY.set_value(imageLeft.naturalHeight);
imageRightX.set_value(imageRight.naturalWidth);
imageRightY.set_value(imageRight.naturalHeight);
}
还有一个使图像适合父 div 的函数:
function fitImagesToContainers() {
var divLeft = document.getElementById("imageContainerLeft");
var divRight = document.getElementById("imageContainerRight");
var imageLeft = document.getElementById("imageLeft");
var imageRight = document.getElementById("imageRight");
if (imageLeft.naturalWidth > imageLeft.naturalHeight) {
imageLeft.setAttribute("width", divLeft.clientWidth);
imageLeft.setAttribute("height", divLeft.clientWidth * (imageLeft.naturalHeight / imageLeft.naturalWidth));
} else if (imageLeft.naturalWidth < imageLeft.naturalHeight) {
imageLeft.setAttribute("height", divLeft.clientHeight);
imageLeft.setAttribute("width", divLeft.clientHeight * (imageLeft.naturalWidth / imageLeft.naturalHeight));
}
}
【问题讨论】:
-
你是在img标签中添加height和width属性吗,当你更新图片src时,你也可以更新heith width属性。
标签: javascript image attributes element