<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form align="center">
<table>
开始日期:<input type="text" id="btn1"><br>
结束日期:<input type="text" id="btn2"><br>
相差天数:<input type="text" id="btn3"><br>
<input type="button" value="计算" onclick="calc()"/>
</table>
</form>
<script>
window.onload=function(){
function calc(){
var btn1=new Date(document.getElementById('btn1').value);
var btn2=new Date(document.getElementById('btn2').value);
var btn3=(btn1-btn2)/(1000*60*60*24);
document.getElementById('btn3').value=btn3;
}}
</script>
</body>
</html>
这样子就计算不了,即使我把js放在最前面也不行
但是这样就可以,如下。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form align="center">
<table>
开始日期:<input type="text" id="btn1"><br>
结束日期:<input type="text" id="btn2"><br>
相差天数:<input type="text" id="btn3"><br>
<input type="button" value="计算" onclick="calc()"/>
</table>
</form>
<script>
function calc(){
var btn1=new Date(document.getElementById('btn1').value);
var btn2=new Date(document.getElementById('btn2').value);
var btn3=(btn1-btn2)/(1000*60*60*24);
document.getElementById('btn3').value=btn3;
}
</script>
</body>
</html>
这是为什么呢?
方法提出来 window.onload=方法名 不加括号
在三种事件绑定方式中(行内绑定,DOM对象.属性方法,事件监听器方法),行内绑定可以一次性绑定多个事件,但绑定的事件不能在window.onload中。
如果想在onload中执行事件,必须使用dom操作挂载事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form align="center">
<table>
开始日期:<input type="text" id="btn1"><br>
结束日期:<input type="text" id="btn2"><br>
相差天数:<input type="text" id="btn3"><br>
<input type="button" value="计算" id='calc' />
</table>
</form>
<script>
window.onload = function() {
document.getElementById('calc').onclick = function() {
var btn1 = new Date(document.getElementById('btn1').value);
var btn2 = new Date(document.getElementById('btn2').value);
var btn3 = (btn1 - btn2) / (1000 * 60 * 60 * 24);
document.getElementById('btn3').value = btn3;
}
}
</script>
</body>
</html>
calc()函数在window.onload=function(){}内定义。
这样calc就是window.onload事件函数中的局部变量(js中函数名就等同变量名)。
calc局部变量只能在window.onload事件函数中访问,在window.onload事件函数之外当然访问不了。
事件没有绑定上吧 应该
因为找不到。
onclick="calc()",其实就是点击的时候运行window.calc(),下面的方法是在全局作用域声明的,此时的函数默认挂载到window上,上面的方法在onload函数内声明的,没有挂载到window上。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632