2017-06-19 17 views
0

私はこのフォーラムやjqueryにも比較的新しいです。私の質問が間違っていれば、否定的な印をつけないようにお願いします。jqueryの範囲外の警告変数

私は検索しようとしましたが、まだ私の問題に適切な解決策を得ることができませんでした。

私は以下のように完全に正常に動作している更新されたunput値を取得するためにchange関数を使用しています。私はまた、下記のようにスコープ内の更新された値で変数に警告することができます。

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
    var myVar = $(this).val(); 
    alert(myVar); 
    }); 
}); 

は、今私が働いていないとして、それより下の範囲外の変数myVarに注意を喚起したいと私は与えられた範囲の外に、この変数を呼び出す方法については考えています。助けてください。

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
    var myVar = $(this).val(); 
    }); 
    alert(myVar); 
}); 
+0

試みは '追加VAR myVarに=「」;'レディ(関数 'の後に(){' –

+0

私はこの質問を投稿する前にこれを試していたが、それは動作していない、あなたが投稿して助けることができます。ソリューションはJSfiddleですか?それは私の多くを助けるでしょう –

答えて

0

あなたが範囲外これを警告しようとした場合は、ページのロード

に発射されるように、それは空白来る代わりに、私はあなたがなぜそれがあるとして、いくつかのイベントリスナー内でそれを呼びたいと思いますあなたはalertを呼び出す関数で読み取ることができる範囲のどこかにmyVarを格納する必要があり、それ

$(document).ready(function(){ 
    var myVar = ''; 
    $("#tags").keyup(function() { 
     myVar = $(this).val(); 
     alert(myVar); 
    }); 

    //or another event listener { 
     alert(myVar); 
    }); 
}); 
+0

別のイベントリスナーを呼び出す方法?あなたは提供された更新コードをpeaseすることはできますか? –

+0

thあなたが値を警告したいときにあなたに依存します – Saksham

+0

変更された値はJSON出力のAPI urlで更新する必要があります。ページを更新せずに自動的に値を変更しない限り、これはできません。 URLの変更値で更新するには、別の関数またはイベントリスナー内で使用するスコープ外の変更値が必要です。 –

0

外の変数に代入しようとしています。ハンマーのアプローチは、このように、グローバルスコープでmyVarを置くことです:varとそれを宣言せずに変数を使用し、それは技術的にグローバルscope--で終わるとき

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
     myVar = $(this).val(); //notice no var keyword 
    }); 
}); 

、それは現在のウィンドウのプロパティになります。あなたは

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
     window.myVar = $(this).val(); //notice no var keyword 
    }); 
}); 

として、それを書くことができ、明示的になりたいと思った場合は今、一般的に、あなたは世界的に避けるべきであるあなたは、例えば、その変数あなたが踏みつける可能性があるかわかりませんから、変数のスコープ別の変数と同じ名前を持つ場合したがって、より良い解決策は、変数をclosureに入れることです。どのように見えるかは、alertという関数を宣言した場所によって異なります。

新しいグローバル関数、ShowAlertを導入したいとしましょう。あなたはこのように、ローカルスコープ外と閉鎖に変数を推進します共通の変数を使用して、同じコードブロックでこれを定義することができます。

$(document).ready(function(){ 
    var myVar; //We use the var keyword to declare this in local scope, for now 

    $("#tags").on("keyup", function() { 
     myVar = $(this).val(); 
    }); 

    ShowAlert = function() { 
     alert(myVar); //Using myVar here forces it into a closure, which will persist even after document.ready has exited 
    } 
}); 

を次に、myVarの最新の値を使用して、アラートを表示しますだけを使用します。

ShowAlert(); 
+0

しかし、window.myVarはどのようにスコープ外の値を返しますか? –

+0

を説明してください。 'window.myVar'はローカルスコープ外とグローバルスコープ内に格納されているためです。これは、ウィンドウ内の任意の場所でコードからアクセスできます。つまり、グローバル変数は理想的ではないので、* myVarを使用する必要があるコードを投稿してください。アクセス方法を教えてください。 –

+0

@ John Wu:変更された値をJSON出力用のURLに連結します。例:https://example.com/suggest?label=changed_input_values&City=NY&f=pjson –

関連する問題