2015-02-06 79 views
0

所以我試圖讓一個函數在點擊圖像時運行。它適用於一個正常的圖像,但我從一個reddit JSON文件獲取圖像。我需要圖像分開調整大小,我無法弄清楚如何。這可能很簡單,但我仍然對編碼不熟悉,所以任何幫助都會很棒。使用JSON文件運行onclick函數

$.getJSON("http://www.reddit.com/r/pcmasterrace/.json?jsonp=?", function (data) { 
$.each(data.data.children, function (i, item) { 
    IsValidImageUrl(item.data.url, function (url, isvalid) { 
     if (isvalid) { 
      $('<img/>').attr('src', item.data.url) 
       .appendTo('#images') 
       .width(500) 
       .onclick = function() {Resize()}; 
      } 
     }); 
    }); 
}); 

功能是否正確?

function Resize() { 
if (document.getElementById('<img/>').style.width === "500px") { 
    document.getElementById('<img/>').style.width = "1000px"; 
} else { 
    document.getElementById('<img/>').style.width = "500px"; 
    } 
} 

我認爲('<img/>')可能是錯誤的。我用('test')對它進行了測試,結果發揮作用,所以我需要它是不同的東西?它與我的測試功能,所以.click工作,所以我認爲它試圖改變錯誤的東西。

+0

你試過調試呢?在Chrome或Firefox的開發控制檯上,您可以使用它。打開開發人員控制檯,將調試器行放入要查看變量的函數中。像這樣:'function(i,item){debugger; IsValidImageUrl(...' – cmertayak 2015-02-07 00:01:50

回答

0

onclick是DOM元素的屬性,而不是jQuery對象。您應該使用click()函數來添加點擊處理程序。

.getJSON("http://www.reddit.com/r/pcmasterrace/.json?jsonp=?", function (data) { 
    $.each(data.data.children, function (i, item) { 
     IsValidImageUrl(item.data.url, function (url, isvalid) { 
      if (isvalid) { 
       $('<img/>').attr('src', item.data.url) 
        .appendTo('#images') 
        .width(500) 
        .click(function() {Resize(this)}); 
      } 
     }); 
    }); 
}); 

Resize功能應採取一個參數告訴它,以改變形象:

function Resize(image) { 
    if (image.style.width == "500px") { 
     image.style.width = "1000px"; 
    } else { 
     image.style.width = "500px"; 
    } 
} 
+0

.click中的'this'是什麼?Resize函數就是我給函數的名字,你可以這樣做嗎? – 2015-02-07 01:22:21

+0

'.click'中的'this'是元素 – Barmar 2015-02-07 01:23:36

+0

我認爲這一點是當用戶點擊其中一個圖像時,它調整了圖像的大小 – Barmar 2015-02-07 01:24:24

相關問題