<!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函数中传递参数。我之前也发布了它,但参数不存在,给出参数我发现了问题。请帮助我。提前致谢
答案 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
感谢大家提出的宝贵建议。