2010-12-02 8 views
0

私は単純なjQueryスクリプトを実行しています。 2つのボタンがあり、1つはデータを送信し、1つのボタンは最初の変数に送信する変数の1つの値を設定する必要があります。ので、ここで[OK]を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()); 
    } 
}); }); 

と、それはすべてのwonderfull動作します。 javascriptの最初の行の1つに "sourceImage"変数が含まれています。

var sourceImage = '20101201161609.jpg'; 

その変数は、上記のスクリプトに正しく渡されます。 2番目のボタン(Save Stateと呼ばれます)は、画像の効果を喜んで感じ、画像の状態を保存し、その画像に対する効果を継続します。これは、ソースイメージが私は次のスクリプトを使用するか、変更する必要があります意味:

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

私はそれが実際にトリガされ、それがあったので、この行はneccesaryないたかどうかを確認するにはライン$('#header').html(sourceImage);を残し、私はその行動が引き起こされたことを確かに知っています。

しかし、「プレビュー」を再度クリックすると、変数sourceImageの値が実際にはこの新しい値を保持する必要がある間に変更されます。

私に助けてくれる誰かがいる。

答えて

4

varキーワードを使用すると、関数内に同じ名前のグローバル変数とは別のローカル変数が宣言されます。グローバル変数にアクセスするためのvarキーワードを削除します。第二の機能で

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

sourceImage変数は、関数にローカルスコープさと同じ変数を参照していません。 varというキーワードを削除するだけで、あなたが望むように動作させることができると思います。言い換えれば、グローバルスコープの変数を使用することには非常に注意する必要があります。一般に、可能な限り狭い範囲で変数をスコープしたいとします。 data関数を使用してこの値をDOMに格納することもできますが、何をしようとしているのかをさらに理解することは難しいです。あなたはすぐにスコープの外に出るローカルvarによって示されるように)変数sourceImageを設定しているので、ここで

0

...

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

...あなたは、絶対に何もしないされています。グローバル(ウィンドウ)変数sourceImageは変更されません。

関連する問題