2012-10-27 56 views
2

我正在研究一些jQuery來調整頁面上的圖像大小。此塊工作正常:爲什麼這總是評估錯誤?

var size = 350; 
$("img").each(function() { 
    if ($(this).height() > $(this).width()) { 
     var h = size; 
     var w = Math.ceil(($(this).width()/$(this).height()) * size); 
    } 
    else { 
     var w = size; 
     var h = Math.ceil(($(this).height()/$(this).width()) * size); 
    } 
    $(this).css({ "height": h, "width": w }); 
}); 

問題是小圖像被放大。沒問題,如果陳述應該照顧的話,還有一個問題!

var size = 350; 
$("img").each(function() { 
    if ($(this).height() > size || $(this).width() > size) { //Always false 
     if ($(this).height() > $(this).width()) { 
      var h = size; 
      var w = Math.ceil(($(this).width()/$(this).height()) * size); 
     } 
     else { 
      var w = size; 
      var h = Math.ceil(($(this).height()/$(this).width()) * size); 
     } 
     $(this).css({ "height": h, "width": w }); 
    } 
}); 

我在哪裏錯了?

+0

圖像的大小(高度/寬度)是多少? – 0x499602D2

+1

您是否嘗試「提醒()」這些值?也許他們是'空'? –

+0

圖像有各種尺寸。該源代碼是chat.stackoverflow.com中的已知郵件的抓取。所以無論人發佈什麼。 – Billdr

回答

1

你的問題可能是你認爲你從一個組件獲取值,而你實際上得到的值(或沒有得到比其他null任何值)從其他地方。

一個快速和骯髒的方法是:

alert(thatDarnedValue); 

,或者,如果你知道如何,它寫出到控制檯窗口,發展DIV或任何你使用調試和實際看到裏面有什麼了。

我經常感到驚訝 - 「這個不是應該是有」的經驗。

當我們在不同準備階段檢查圖形組件的值時,往往會出現這種情況。文檔可能已加載但未準備就緒等。

+0

@Billdr爲什麼要投票?!我以爲你是**幫助我的建議......我錯過了什麼? –

+0

那不是我的。我會讓你回到0。 – Billdr

3

問題是我的腳本在我的頁面上的圖像加載之前發射,儘管腳本標記位於頁面的底部。在那裏學到的經驗我將.each改爲.load,這對我的目的來說很好。

更好的解決方案可能是將其包含在$("window").load()事件或$(document).ready()事件中。