1. ホーム
  2. javascript

[解決済み] jQueryのグローバル変数の作成

2022-03-03 20:04:01

質問

関数の受け渡し方法 a_href = $(this).attr('href'); の値をグローバルな a_href を作成します。 a_href="home"

var a_href; 

    $('sth a').on('click', function(e){
        a_href = $(this).attr('href');

          console.log(a_href);  
         //output is "home"

        e.preventDefault();
    }

console.log(a_href);  
//Output is undefined 

解決方法は?

あなたのコードは、変数宣言が dom read ハンドラ内にある場合、それがグローバル変数ではなく、クロージャ変数になる可能性があることを除けば、問題ないように見えます。

jQuery(function(){
    //here it is a closure variable
    var a_href;
    $('sth a').on('click', function(e){
        a_href = $(this).attr('href');

          console.log(a_href);  
         //output is "home"

        e.preventDefault();
    }
})

変数をグローバルにするには、1つの解決策として、グローバルスコープで変数を宣言します。

var a_href;
jQuery(function(){
    $('sth a').on('click', function(e){
        a_href = $(this).attr('href');

          console.log(a_href);  
         //output is "home"

        e.preventDefault();
    }
})

もう一つは、変数をウィンドウ オブジェクトのプロパティとして設定する方法です。

window.a_href = $(this).attr('href')

コンソールで未定義を表示する理由

として出力されています。 undefined なぜなら、変数が宣言されているにもかかわらず、その変数に値を初期化していないため、変数の値が設定されるのは a 要素がクリックされるまで、変数には値 undefined . もし変数を宣言していない場合、その変数は リファレンスエラー