2012-09-12 42 views
0

我正在試圖製作一個圖庫查看器,其中網頁顯示的是真實圖像的大拇指,然後當圖像被點擊時,顯示原始圖像(與原始大小),div將html「img」元素更改爲可見(否則默認情況下將其設置爲隱藏),同時嘗試獲取圖像的尺寸以便我可以適當地將不同尺寸的圖像居中。到他們的寬度和問題是,每當我第一次點擊任何拇指在頁面加載後,獲取圖像寬度的語句發送0,然後當點擊任何其他圖像而不重新加載頁面(包括前一個),它顯示了以前的圖像的維度,有時它的作品,有時不(大部分不),請幫助我。 JavaScript代碼如下。在javascript中聲明值後返回零

// JavaScript Document 
$(document).ready(function() { 
$.post(


"loadup.php", 
     { 
      refer:"yes" 
     },function(response){ 
      $("#gallery_view_tab").html(response); 
      initAll(); 
    }); 
}); 

function initAll(){ 
    $("<div id='imgViewer'></div>").appendTo("body"); //set up image viewer 
    $("#imgViewer").insertBefore("#monster_wrap"); //set before monster_wrap 

    var thumbimgs = $(".thumbimg"); 
    for(i=0; i<thumbimgs.length; i++){ 
     var thumbimg = thumbimgs[i].id; 
     var thumbid = '#'+thumbimg; 
     $(thumbid).click(loadImgviewer); 
    } 
} 

function loadImgviewer(){ 
    var imgLink = this.getAttribute("data-link"); 
    $("<img id='closeImgviewer' src='images/close.png' /><img src='' id='imgview' />").appendTo("#imgViewer"); 
    $("#imgview").attr('src', imgLink); 
    $("#imgViewer").css('visibility', 'visible'); 
     imgwidth = $("#imgview").width(); 
     screenwidth = $(window).width(); 
     var pos = (screenwidth - imgwidth)/2; 
     $("#log").html(pos); 
     $("#imgview").css('margin-left', pos); 

$("#closeImgviewer").click(unloadImgviewer); //set click event handler on image view closer 

} 

function unloadImgviewer(){ 
    $("#imgViewer").css('visibility', 'hidden'); 
    $("#imgview").attr('src', ''); 
    $("#imgViewer").empty(); 
} 
+1

歡迎來到[SO];如果您還沒有,請花點時間查看[faq]。此外,我建議閱讀[Markdown編輯幫助](http://stackoverflow.com/editing-help)。 – zzzzBov

+0

@zzzzBov我做錯了什麼,但我用代碼按鈕代碼 –

+0

沒有這麼多,沒有。你的問題是我讀過的最好的新手問題之一,至少你發佈了代碼並試圖將其格式化。我建議您花更多時間在您的代碼之前的文字牆上。大多數情況下,我有興趣提供您可能會或可能不知道的資源。 – zzzzBov

回答

0

我剛剛重寫了一下你的代碼。

$(document).ready(function() { 
    $.post(
     "loadup.php", 
     { 
      refer:"yes" 
     }, 
     function(response){ 
      $("#gallery_view_tab").html(response); 
      initAll(); 
     } 
    ); 
}); 

function initAll(){ 
    $("<div id='imgViewer'></div>").appendTo("body"); //set up image viewer 
    $("#imgViewer").insertBefore("#monster_wrap"); //set before monster_wrap 
    $(".thumbimg").on('click', loadImgviewer); 
} 

function loadImgviewer(){ 
    var imgwidth, pos, 
     screenwidth = $(window).width(); 
    var imgLink = this.getAttribute("data-link"); 
    $("<img id='closeImgviewer' src='images/close.png' /><img src='' id='imgview' />").appendTo("#imgViewer"); 
    $("#imgview").attr('src', imgLink).on('load',function(evt){ 
     imgwidth = $(this).width(); 
     pos = (screenwidth - imgwidth)/2; 
     $("#log").html(pos); 
     $("#imgview").css('margin-left', pos); 
     $("#imgViewer").css('visibility', 'visible'); 
    }; 
    $("#closeImgviewer").click(unloadImgviewer); //set click event handler on image view closer 
} 

function unloadImgviewer(){ 
    $("#imgViewer").css('visibility', 'hidden'); 
    $("#imgview").attr('src', ''); 
    $("#imgViewer").empty(); 
} 

請試試看。沒有嘗試,但我認爲它應該工作。

+0

我不知道該怎麼稱呼你,但你是真正的程序員和主人。非常感謝你非常非常非常veryhhhhhhh ..... IT WORKED !!!!!!順便說一句我檢查了代碼有輕微的行更改...和功能參數evt你可以告訴我們爲什麼使用它,因爲我看過很多人使用它,我忘了告訴你,但我試過使用加載函數。但問題在於它被觸發了多次,例如在任何用於觸發4次的圖像上單擊第4次。請你能說出爲什麼現在不會發生這種情況嗎?再次感謝你非常多! =)) –

+0

和btw什麼是github用於?就像是一個本地主機或其他東西? –

+0

我很高興工作:-) evt參數是通過jQuery傳遞的事件對象...在這種情況下沒有必要,因爲我們沒有使用它......這只是我的習慣。多重觸發是因爲您將事件多次附加到同一個對象。 – Michi