1

$(document).ready(...) 内のスクリプトは、DOM がロードされた後に常に実行されると思いました。したがって、 $(document.ready(...) が頭に入るか本体に入るかは問題ではありません。しかし、以下のコードは、私が望むように画面上に「りんご」を生成しません。ページの下部にある GiveApples() 関数を見つけますが、機能します。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(giveApples());
function giveApples() {
    $("#appleTree").html("apples");
}
</script> 
</head>
<body>
<div id="appleTree"></div>
</body>
<script>
//$(document).ready(giveApples());
</script>
</html>

DOM、ページの読み込み、スクリプト タグの場所、(document).ready()、またはこの問題の原因となっているその他のことについて、私の誤解を正してくれる人はいますか? 私はまだWebプログラミングにかなり慣れていません。

4

5 に答える 5

13

これは、実際にはイベント ハンドラーをイベントにバインドしていないためですreadygiveApplesすぐに呼び出して、その戻り値 ( undefined) をバインドするイベント ハンドラーとして渡します (サイレントに失敗します)。関数を呼び出すのではなく、に渡す必要があります。.ready()

$(document).ready(giveApples);

括弧がないことに注意してください。

于 2013-01-12T00:12:37.387 に答える
10

そして、そうではありません。問題は、引数として渡していないことですがgiveApples、それを呼び出しているため( のため())、その戻り値です。機能させるには、括弧を入れないでください:

$(document).ready(giveApples);

$(document).ready現在のコードではundefined、に渡される値はgiveApplesです。 は値を返さないためです。

次のこともできます。

$(document).ready(function(){
    giveApples();    //However, if you access the 'this' keyword inside the giveApples function, it will point to 'window', and not 'document'
});

alert次の 2 つの値を使用すると、上で説明したことがわかります。

alert(giveApples);    //Shows the giveApples function body, properly
alert(giveApples());  //Shows undefined, since giveApples is being called and does not return any value

DOM イベント ( 、 など) を使用する場合も同じonloadですonclick。次のようにします。

window.onload = myFunction;

そしてそうではありません:

window.onload = myFunction();
于 2013-01-12T00:12:56.393 に答える
3

機能がありません

この構文では:

$(document).ready(giveApples());

ドキュメントの準備ができたときに実行されるコードとして、giveApples の結果を渡しています。また、呼び出された時点では、この関数はまだ宣言されていません。

正しい構文

これはうまくいきます:

$(document).ready(function() {
    giveApples();
});

次のように:

$(document).ready(giveApples);
于 2013-01-12T00:13:42.617 に答える
1

document.read()...

それは本当に問題ではありません。これは、多くの人が従う標準的な規則にすぎません。

多くの人は、<script>タグをタグの最後の要素として配置することも支持してい<body>ます。

証明: ほら?それは物議を醸しています。私は反対票さえも得ました。=)

于 2013-01-12T00:12:26.493 に答える
0

srcipt はどこにでも配置できます。HTML は上から下に実行されます。はい、$(document).ready(...) は常に DOM がロードされた後に実行されます。関数を $(document).ready の外に置きます。これは、DOM がロードされているときに実行されることを意味します。おそらく、次のようにすることができます: $(document).ready(function giveApples(){$("#appleTree").html ("りんご");})。JQuery を学びたい場合は、リンクを提供します。私も初心者です。とても素晴らしいので、楽しんでください。

30日で学ぶ-jquery

w3school

于 2013-01-12T00:42:41.510 に答える