0

簡単な jQuery スクリプトを実行しています。2 つのボタンがあり、1 つはデータを送信し、1 つのボタンは最初の変数で送信される変数の 1 つの値を設定する必要があります。

わかりましたので、ボタン 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 の最初の行の 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); });

実際にトリガーされたかどうかを確認するために行を残しました$('#header').html(sourceImage);が、そうであったため、この行は必要ありませんが、アクションがトリガーされていることは確かです。

ただし、「プレビュー」を再度クリックすると、変数sourceImageの値が元の値に戻りますが、実際にはこの新しい値を保持する必要があります。

私を助けてくれる人がいることを願っています。

4

3 に答える 3

4

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

$('#save_state').click( function() {
  sourceImage = '2010-12-02-35-20-preview.png';
  $('#header').html(sourceImage);
});
于 2010-12-02T01:36:44.507 に答える
0

ここ...

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

...すぐに範囲外になるローカルvar変数 sourceImage を設定しているため、まったく何もしていません。グローバル (ウィンドウ) 変数 sourceImage は変更されません。

于 2010-12-02T01:39:44.570 に答える
0

2 番目の関数のsourceImage変数は、その関数に対してローカルにスコープが設定されており、同じ変数を参照していません。varキーワードを削除するだけで、思いどおりに機能させることができると思います。そうは言っても、グローバル スコープの変数の使用には細心の注意を払う必要があります。通常、変数のスコープはできるだけ狭くします。代わりに関数を使用してdataこの値を DOM に格納することをお勧めしますが、何をしようとしているのかをもっと理解しないと知ることは困難です。

于 2010-12-02T01:37:54.690 に答える