-2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>



<script language="javascript" type="text/javascript">

(function setFont() {
var i;
for ( i = 0; i < document.all.length; i++) {
document.all[i].style.fontFamily = "Verdana";
document.all[i].style.fontSize = "16";
document.all[i].style.color="black";
}
})();

(function abc(a)
{
alert(a);
ansArray = ['a'];  
for(i=1;i<=a;i++)
{ 
document.write('<input type = "button" value = "a">');
document.write('<input type = "button" value = "b">');
}
var myButton = document.getElementsByTagName("input");
//alert(myButton.length);
myButton[0].onclick = function() {
    if(ansArray[0] == 'a')
        myButton[0].style.backgroundColor = "green";
    else
        myButton[0].style.backgroundColor = "red";
};

myButton[1].onclick = function() {
    if(ansArray[0] == 'b')
        myButton[1].style.backgroundColor = "green";
    else
        myButton[1].style.backgroundColor = "red";
};
})();
setFont();
</script>
</head>

<body onload="abc(2)">
</body>
</html>

JavaScript 関数 abc(a) が から渡された値 2 を取得しません<body onload = "abc(5)">。未定義と書いてあります。JavaScript 関数でパラメーターを渡す方法。以前にも投稿しましたが、パラメーターがありませんでした。パラメーターを指定すると、問題が見つかりました。助けてください。前もって感謝します

4

3 に答える 3

1

あなたの関数はクロージャーであり、公開されていませんが、作成直後に実行されます。そして、それはなくなりました。

かっこよく見せるためではなく、目的があります。通常の関数を作成して機能させるだけです


(function(a) {
  // immediately called and 'garbaged'
})(a);

対。

function publicAlwaysCallable(a) {
  console.log(a); // call me when you like
}
于 2012-10-24T07:50:32.390 に答える
1

この場合、即時関数を使用する必要はありません。次のように宣言します。

function abc(a) { ... }

何らかの理由でコードをクロージャーにカプセル化したい場合は、次のようにできます。

(function(export) {
    export.abc = function(a) { ... };
    ...
})(window);
于 2012-10-24T07:53:13.753 に答える
0

ボタン クリック ハンドラを持つ通常の関数 (クロージャではない) 関数 abc(a){ ... } は、スクリプトの最後で呼び出されます。ページの onload イベントではありません。IE9でも動作するようになりました

皆様、貴重なご提案をありがとうございます。

于 2012-10-26T07:42:53.687 に答える