<!DOCTYPE html>
<html>
<head>
<title>Greet</title>
</head>
<body>
<form id="demo">
<input id="name" placeholder="Name" type="text"/>
<input type="submit"/>
</form>
<script>
function greet()
{
alert('hello, ' + document.getElementById('name').value);
}
document.getElementById('demo').onsubmit = greet();
</script>
</body>
警报不显示我提交的名称。只有hello,
.但是如果我像这样重写代码document.getElementById('demo').onsubmit = greet;
那么它就可以工作了。但是为什么?这也有效:
<!DOCTYPE html>
<html>
<head>
<title>dom0</title>
</head>
<body>
<form id="demo" onsubmit="greet()">
<input id="name" placeholder="Name" type="text"/>
<input type="submit"/>
</form>
<script>
function greet()
{
alert('hello, ' + document.getElementById('name').value);
}
</script>
</body>
它之所以有效greet
是因为它指的是函数本身。编写greet()
时,您传递的是 greet 函数的输出,因为括号调用该函数并返回输出。