2016-03-14 93 views
-2

我有2個碼 的Javascript:的JavaScript/JQUERY局部變量

function changeImage(event){ 
    event = event || window.event; 
    var targetElement = event.target || event.srcElement; 
    if (targetElement.tagName == "IMG") { 
     npath = document.getElementById("main_img").src = targetElement.getAttribute("src"); 
    } 
} 

和jQuery

var bpath = npath.replace("_n", "_b"); 
$(document).ready(function(){ 
    $('div.prod_seeds_mimg_div').zoom({url: bpath}); 
}); 

我想從Javascript塊訪問npath變量,改變它,在jQuery中使用。但npath變量未在Javascript外部定義。我嘗試通過跳過var並在兩個塊(var npath = "";)之上聲明npath來使其成爲全局,但這些方法沒有幫助。

有沒有辦法從JS訪問npath並進一步使用它? 謝謝。

+0

你可以分享一個例子,你可以使用像https://jsbin.com –

+0

這些都在同一個文件?你在這裏聲明他們的方式,它們在'window'對象上,你應該沒問題。 – krillgar

+0

你在做什麼應該可以工作,假設在需要npath的代碼之前執行'changeImage'。 (但從它的外觀來看,它可能不是) –

回答

1

EDITED

嘗試使用下面的代碼:

$(document).ready(function(){ 
    $('.prod_seeds_mimg_div').zoom({url: $('#main_img').attr('src')}); 

    $('div.prod_seeds_oimg_div img').on('click', function(){ 
    changeImage($(this).attr('src')); 
    }); 

}); 

function changeImage(imagePath){ 
    $('#main_img').attr('src', imagePath); 
    $('.prod_seeds_mimg_div').zoom({url: imagePath}); 
} 

要記住,從你的HTML源代碼刪除changeImage的onClick觸發。

+1

我不建議這樣做,因爲它會污染全局命名空間,但它會起作用。 – Mardok

+0

我改變了解決方案,我認爲現在可以工作。 – joaofraga