2016-04-29 15 views
1

グローバル変数を宣言したいが、それでもundefinedと言っている。jQueryグローバル変数が機能しない

<div class="last">Blah</div> 
$(document).ready(function() { 
    $(document).on('click', '.last', function() { 
     window.testing = $(this).html(); 
    }) 
    console.log(testing); 
}) 

私もこれを試してみました。

$(document).ready(function() { 
    var testing; // testing = undefined 

    $(document).on('click', '.last', function() { 

     testing = $(this).html(); 
    }) 

    console.log(testing); // prints undefined, because onlick event has not fired yet and testing is not equal to $(this).html(); 
} 
+2

あなたのコードは正常に動作しますが、あなたはそれを期待しているではありませんかに。 DOMの読み込み時に 'testing'変数を読み込みますが、ボタンをクリックした後に*値を与えるだけです。また、グローバル変数を使うことは良いことではないことに注意してください。さまざまな場所で変数を使用できるようにする必要がある場合は、名前空間を使用します。 –

+0

ドキュメント準備関数の前に 'var testing'を設定し、グローバル変数として実行します –

答えて

1

あなたのコードは正常に動作しますが、あなたはそれが期待しているではないか。

$(function() { 
 
\t 
 
    var testing; 
 

 
    $('.last').click(function() { 
 

 
    testing = $(this).html(); 
 

 
    alert(testing); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="last">Blah (click here)</div>

あなたのコードを:

$(document).ready(function() { 
    var testing; 
    $(document).on('click', '.last', function() { 
     testing = $(this).html(); 
    }) 
    console.log(testing); 
}) 
+0

ちょっと説明していただきありがとうございます、あなたのコードが動作しています。しかし、私はまだ私は値を取得するためにボタンの機能を使用する必要があります混乱している?なぜ私は私は直接console.logを使用して値を取得する ありがとう –

+1

これは、ページが読み込まれるとすぐに元のconsole.logが実行されるためです。その時、値は設定されません。次に、ページがロードされて5秒後に、変数の値を読み取るコードがなくなったら、ボタンをクリックします。したがって、いつでもその値を読むためにクリックすることができる新しいボタンを追加しました。 –

+0

ありがとう。今それはすべてクリアです:) –

1

これを試してみてください。 DOMの読み込み時にtesting変数を読み込みますが、ボタンをクリックした後に値を与えるのはです。その代わりに、window.testing変数が設定された後で変数を読み取る方法が必要です。ボタンクリックを使用した例を次に示します。

$(document).ready(function() { 
 
    $(document).on('click', '.last', function() { 
 
    window.testing = $(this).html(); 
 
    }) 
 

 
    $('button').click(function() { 
 
    console.log(window.testing); 
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="last">Set</div> 
 
<button>Read</button>

また、グローバル変数を使用してやっていることは良いことではありませんので注意してください。さまざまな場所で変数を使用できるようにする必要がある場合は、名前空間を使用します。

+0

関数内でテスト変数を使用しています。私はそれが関数の外で使用されることを望んでおり、またユーザーがそれをクリックすると "last"要素の値が必要です。 –

0

試してみてください。この

var testing = ""; 
$(document).ready(function() { 
    $(document).on('click', '.last', function() { 
     testing = $(this).html(); 
    }); 
    console.log(testing); 
}); 

編集

あなた.lastクラス値、変数への単純な値を渡して試してみてください

var testing = ""; 
$(document).ready(function() { 
    $(document).click(function() { 
     testing = 1; 
     alert(testing); 
    }); 

}); 
+0

まだ未定 –

関連する問題