<body>
<style>
body{
margin-top: 30%;
margin-left: 40%;
}
input{
width: 80px;
height: 30px;
}
div{
width: 250px;
height: 150px;
border: 2px dashed rosybrown;
}
</style>
<h2>关于JS中定时器参数传递问题</h2>
<input type="button" value="showTime" onclick="time1()">
<br/>
<p id="ptime"></p>
<div id="divtime"></div>
</body>
function time1() {
//实现展示时间
//设置一个定时器,每1秒执行一次显示时间的事件
//获取显示时间的文本对象
//var divtime = document.getElementById("divtime");
var ptime = document.getElementById("ptime");
setInterval(function() {
var date = new Date();
ptime.innerText = date.toLocaleString();成功
//var time11 = document.getElementById("time11");
//time11.setAttribute("value",date.toLocaleString())此设置属性不成功
//ptime.innerHTML = date.toLocaleString();成功
//divtime.innerHTML = date.toLocaleString();成功
},1000,ptime);
}
若在定时器匿名函数内传递参数 ,则无效,正确传递是在setInterval(function, milliseconds, param1, param2, …)
参数传递通过param1\param2…传递即可
第二种使用非匿名函数
function time1() {
//实现展示时间
//设置一个定时器,每1秒执行一次显示时间的事件
//获取显示时间的文本对象
var ptime = document.getElementById("ptime");
setInterval("show()",1000,ptime);
}
function show() {
var date = new Date();
ptime.innerText = date.toLocaleString();
}
该方法写于time1外部,且setInterval(show(),1000,ptime) 报错
必须使用引号将js代码括起来,否则就只执行一次