3
$(document).ready(function() {

var v = $("input[name=link]").val();

$('p').on('click', function () {
    console.log(v);
    console.log('hello'); 

})  
});

上記は私が書いたjQuery/JSコードです。入力フィールドの値を取得し、段落をクリックするとコンソールに出力することになっています。

すでにグローバル変数として宣言vしていますが、コンソールに出力されません。var v宣言を関数に配置してローカル変数にする場合にのみ機能します。なぜこのようになっているのですか?グローバル変数は常にコード全体で機能すると考えられていました。これについて教えてください。

4

2 に答える 2

4

これはスコープの問題ではなく、vイベント ハンドラーとして jQuery に与えるコールバックから完全にわかります。

コードの問題はv、ドキュメントの準備が整うとすぐに評価されることです。入力の値を変更すると、v変更されず、最初に空だった場合は空のままになります。v入力のフィールドへのある種のポインターではありません。入力が変更されたときに変更する理由はありません。

クリック時にフィールドの値が使用されるようにするには、次のコードを使用します。

$(document).ready(function() {
    $('p').on('click', function () {
        var v = $("input[name=link]").val();
        console.log(v);
        console.log('hello'); 
    })  
});
于 2013-03-30T17:39:34.627 に答える
0

問題はv、テキストを変更した後に値を変更していないことですtextbox

準備ができたら、textbox.ie empty の値を割り当てます。

以下のコードの仕組みを参照してください。

   var v = 10;
   alert("" + v);
   myFunction();

    function myFunction()
       {
       v = 20;
       }

    alert("" + v);
于 2013-03-30T17:40:45.363 に答える