0

divの値を取得する単純なjsfiddleがあります。

セクションでは$(document).ready(function(){})、div のテキストを問題なく取得します。後でその値を関数で使用しようとすると、値が変更されます (追加しない限り.innerHTML)。その変数の値が変化するのはなぜですか? .innerHTMLつまり、後でその変数を呼び出すときに追加する必要があるのはなぜですか?

ありがとう!

<div id="my_div">1</div>

// Javascript/JQuery

$(document).ready(function(){ 
    var my_div = $("#my_div").text();

        alert(my_div);

        func();
    });


function func(){    
    alert(my_div); // why does the value change here...why???
        alert(my_div.innerHTML); // why do I need ".innerHTML' here???
};
4

5 に答える 5

2

これは、ID を持つすべての要素がデフォルトでグローバル スコープのプロパティであるためです。

基本的my_divに in yourfunction func()は call と同じwindow.my_divです。

削除var my_div = $("#my_div").text()してみても、 で引き続き使用できますfunc()

この質問は関連しています ID を持つ DOM ツリー要素はグローバル変数になりますか?

于 2013-01-14T16:54:32.260 に答える
2

div の特定の「機能」を要求していないため、値が変更されます。要素に警告しようとしているだけです...

最初のビットでは、関数内に my_div を割り当てました。to を関数の外に移動するvar my_divと、ローカル変数ではなくグローバル変数になります。

編集されたフィドル:ここ

于 2013-01-14T16:50:24.867 に答える
2

my_div をグローバル スコープで宣言していないためです。

次のようにする必要があります。

var my_div;
$(document).ready(function(){ 
    my_div = $("#my_div").text();

    alert(my_div);

    func();
});
于 2013-01-14T16:51:19.713 に答える
1
$(document).ready(function(){ 
var my_div = $("#my_div").text();

    alert(my_div);

    func(my_div);
});


function func(my_div){    
    alert(my_div); // why does the value change here...why???
};

my_div への参照を渡す必要があります。

于 2013-01-14T16:54:42.177 に答える
0

次の場合:

function func(){    
    alert(my_div); // why does the value change here...why???
    alert(my_div.innerHTML); // why do I need ".innerHTML' here???
};

id ( ) で html 要素を取得しますmy_div
なんで ?my_divins がグローバルとして宣言されていないためです。
そのため、アラートを出すとオブジェクトが得られます。

my_div次のように、他の名前を使用してコードを実行してみてください。

$(document).ready(function(){ 
    var div = $("#my_div").text();

    alert(my_div);

    func();
});


function func(){
    alert(div);
    alert(div.innerHTML);
};

次のエラーが表示されます。

Uncaught ReferenceError: div is not defined 
于 2013-01-14T16:57:59.320 に答える