1

私のコード

これは私が書いたコードです。このdefault関数は、ページが読み込まれたときに、ボタンをクリックせずに呼び出す必要があります。いくつかのデータが表示され、次に2つのボタンが表示されます。そのコードにはどのような変更が必要ですか?
私は初心者なので、多くのことを見逃しているかもしれません。助けてください。

これは私のJavaScriptの部分であり、詳細なプログラムはリンクに記載されています。

function default(){
var i=7;
j=15;
document.write(i+j);
}
4

4 に答える 4

7

キーワードの使用を避ける

次のキーワードは使用できませんdefault

Uncaught SyntaxError: Unexpected token default 

関数の名前を変更する必要があります。

すぐに呼び出される関数式

それが完了したら、括弧で囲んですぐに実行できます。

(function dflt(){
  var i = 7, j = 15;
  document.write( i + j );
})();

警告: 避けるdocument.write

document.writeはドキュメントを消去し、ドキュメントの内容を削除することに注意してください。代わりに、新しいテキスト ノードを挿入するか、ページ上の要素の内容を更新する必要があります。

(function dflt(){
  var i = 7, j = 15;
  document.body.appendChild( document.createTextNode( i + j ) );
})();

このテキスト ノードをページの要素に追加することもできます。

var tNode = document.createTextNode( i + j );
document.getElementById("foo").appendChild( tNode );

これにより、結果のテキストが次のid属性を持つ要素に追加されますfoo

<span id="foo"></span>
于 2012-05-20T17:45:58.820 に答える
4

使用できますImmediately Invoked Function Expression

(function defaults() { // I edited the function name - "default" can not be used
    var i = 7;         // You can also remove the function name, will work either
    j = 15;            // way. "default" is a reserved word
    document.write(i + j);
})();

しかし、それはそれを呼び出しています... 関数を呼び出さずに実行することはできません。魔法で実行しますか?

あなたはこれを読むべきです:

この「(function(){});」、角かっこ内の関数は、javascript で何を意味しますか?


@stakx が指摘したように、次のように、X 時間後に関数を実行する関数への関数参照を渡すことができますsetTimeout

setTimeout(defaults, 1000); // execute "defaults" after one second.

しかし、それは自分で処理するのと同じです:

function foo(aFunction){
    aFunction();
}

foo(defaults);
于 2012-05-20T17:44:26.847 に答える
2

jQuery を使用しない場合 (@Photon Critical Fatal Error で提案されているように)、body要素のonloadイベントを試してみてください。

<body onload="default();">
    ...
</body>

ただし、これは期待どおりに機能しない場合があります。jQuery はこれをより信頼性の高い方法で処理するので、試してみる場合は、$(document).ready(…)API 関数を調べてください。

于 2012-05-20T17:55:51.030 に答える
1
function default(){
    var i=7;
    j=15;
    document.write(i+j);
    }

デフォルトは、使用できないJavaScriptの予約語です。

于 2012-05-20T17:46:12.480 に答える