var timer = null;
window.onload = function() {
var oBtn = document.getElementById('btn');
oBtn.onclick = startMove(2);
};
function startMove(speed) {
var oDiv = document.getElementById('box');
clearInterval(timer);
timer = setInterval(function() {
if (oDiv.offsetLeft >= 500) {
clearInterval(timer);
} else {
oDiv.style.left = oDiv.offsetLeft + speed + 'px';
}
}, 30);
}
如上 运行起来 一打开页面div就开始运动,但是如果改成
oBtn.onclick = function(){
startMove(2);
};
就能够正常运行。哪位师兄能够解释一下这个现象嫩
window.onload = function() {
var oBtn = document.getElementById('btn');
oBtn.onclick = startMove(2);
};
function startMove(speed) {
var oDiv = document.getElementById('box');
clearInterval(timer);
timer = setInterval(function() {
if (oDiv.offsetLeft >= 500) {
clearInterval(timer);
} else {
oDiv.style.left = oDiv.offsetLeft + speed + 'px';
}
}, 30);
}
如上 运行起来 一打开页面div就开始运动,但是如果改成
oBtn.onclick = function(){
startMove(2);
};
就能够正常运行。哪位师兄能够解释一下这个现象嫩
如果不带参数可以 oBtn.onclick = startMove;
带参数就还是用oBtn.onclick = function(){
startMove(2);
};这种方式
http://blog.csdn.net/qq_29594393/article/details/53032842
http://blog.csdn.net/qq_29594393/article/details/52805390
做为一个对象,函数是可以赋值传递的。
onclick是个事件,事件所需要的是函数对象的引用地址。函数名后面不加圆括号()就是获取函数对象的引用地址,(这样不调用执行函数)。
如果不带参数可以 oBtn.onclick = startMove; 表示把startMove这个函数对象的引用地址赋值给oBtn.onclick。
带参数就用oBtn.onclick = function(){startMove(2)};表示创建一个新的函数对象把这个新的函数对象的引用地址赋值给oBtn.onclick。函数名后面的圆括号()实际上是调用(执行)函数的运算符。
如果函数名后面加上圆括号就表示立即调用(执行)这个函数里面的代码。