2010-12-02 69 views
0

所以我有一個簡單的jQuery腳本運行。它有2個按鈕,1個發送數據,1個按鈕需要設置第一個發送的變量之一的值。jQuery沒有傳遞變量後.click

好了,所以這裏是1鍵(稱爲預覽)的腳本:

$('#execute').click(function() { 
$('#currentImage').remove(); 

$.ajax({ 
    type: "POST", 
    url: "effect.php", 
    data: { action: $("[name='action']:checked").val(), source: sourceImage, destination: destinationImage, variables: $('#variables').val() }, 
    success: function(msg){ 
    $('#workspace').html(msg); 
    $("#preview").attr("src", destinationImage+"?timestamp=" + new Date().getTime()); 
    } 
}); }); 

這樣做是把一個效果的圖像,這一切工作的完美的事情。 JavaScript的第一行之一包含「sourceImage」變量。

var sourceImage = '20101201161609.jpg'; 

該變量被正確地傳遞給上面的腳本。 第二個按鈕(稱爲「保存狀態」)可確保那些對圖像效果感到滿意的人保存圖像狀態,並繼續對該圖像執行效果。這意味着源圖像需要改變,這是我使用下面的腳本:

$('#save_state').click(function() { 
var sourceImage = '2010-12-02-35-20-preview.png'; 
$('#header').html(sourceImage); }); 

我離開了線$('#header').html(sourceImage);並檢查它是否確實觸發,它是,所以這行不neccesary,但我肯定知道這個動作是被觸發的。

然而,那些我又在變化的「預覽」,單擊變量sourceImage回值的價值就開始,而它實際需要保持這個新的價值。

HOpe有人可以幫助我。

回答

4

通過使用var關鍵字,您可以在函數中聲明一個局部變量,它與具有相同名稱的全局變量分開。取下var關鍵字來訪問全局變量:

$('#save_state').click(function() { 
    sourceImage = '2010-12-02-35-20-preview.png'; 
    $('#header').html(sourceImage); 
}); 
0

第二功能sourceImage變量局部範圍的功能,而不是指同一個變量。我認爲你可以通過簡單地刪除var關鍵字使它按照你想要的方式工作。話雖如此,你應該非常小心使用全局範圍的變量。通常,您希望儘可能縮小變量的範圍。您可能想使用data函數將此值存儲在DOM中,但如果不瞭解您正在嘗試執行的操作,則很難知道該值。

0

這裏......

$('#save_state').click(function() { 
var sourceImage = '2010-12-02-35-20-preview.png'; 
$('#header').html(sourceImage); }); 

...你即使什麼也不做,因爲你設置本地(由var所示)可變sourceImage這立即超出範圍。全局(窗口)變量sourceImage保持不變。