学了这么久的js居然没有意识到这个问题。
对于一个无参函数,调用很简单,如下:
<body>
<input type="button" value="click me" id="btn">
<script>
var btn=document.getElementById("btn");
function test(){
alert("hi");
}
btn.onclick=test;
</script>
</body>
所以,我理所当然地认为,有参函数的调用,如下:
<body>
<input type="button" value="click me" id="btn">
<script>
var btn=document.getElementById("btn");
function test(text){
alert(text);
}
btn.onclick=test('hi');
</script>
</body>
但是,一刷新,函数就执行了。是由于只要函数是函数名+()的形式就会执行。
所以,要调用有参函数,可以如下:
<body>
<input type="button" value="click me" id="btn">
<script>
var btn=document.getElementById("btn");
function test(text){
alert(text);
}
btn.onclick=function(){
test("hi");
};
</script>
</body>
或者:
<body>
<input type="button" value="click me" onclick=test("hi")>
<script>
var btn=document.getElementById("btn");
function test(text){
alert(text);
}
</script>
</body>
以后学习不能放掉死角,不能赶速度。最简单的,也是最容易忽略的。