我會遇到一個問題,同時通過javascript img元素上進行更改:更改圖像組件的src屬性和獲取大小屬性
我通過鍵盤上的箭頭鍵建立通過不同的圖像,以循環的框架。我通過將所有圖像url加載到一個數組中,然後相應地更改img元素的src屬性來完成此操作。
到目前爲止一切正常。但是現在我想要顯示當前圖像的naturalHeight和naturalWidth。不幸的是,當我循環顯示圖像時,顯示當前圖像之前的圖像的大小,雖然元素顯示正確的圖像。
這是否與加載順序和渲染有關?
如果有人能幫我解決這個問題,我將非常感激。
問候
最大
上的評論:
我簡單地通過加載圖片:
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標記,當您更新圖像src時,還可以更新heith寬度屬性。 –