Javascript函数没有传递参数

时间:2012-10-24 07:46:36

标签: javascript

<!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)不会从<body onload = "abc(5)">获取值2。它说未定义。如何在javascript函数中传递参数。我之前也发布了它,但参数不存在,给出参数我发现了问题。请帮助我。提前致谢

3 个答案:

答案 0 :(得分:1)

你的函数是一个闭包,它不会暴露给公众,但它会在创建后立即执行。 然后就消失了。

看起来不酷,它有其目的。只需使用正常功能即可使其正常工作


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

VS

function publicAlwaysCallable(a) {
  console.log(a); // call me when you like
}

答案 1 :(得分:1)

在这种情况下,您不必使用立即功能。声明如下:

function abc(a) { ... }

如果出于某种原因想要将代码封装到封闭中,可以这样做:

(function(export) {
    export.abc = function(a) { ... };
    ...
})(window);

答案 2 :(得分:0)

在脚本末尾调用带有按钮单击处理程序的正常函数(非闭包)函数abc(a){...}。不在页面的onload事件上。现在它也适用于IE9

感谢大家提出的宝贵建议。