Window.load不起作用

时间:2013-06-17 09:24:48

标签: javascript html

有人可以告诉我为什么下一个代码无效吗?

var nump = 0;
 function point() {
  nump++;
  document.getElementById('point').style.margin = nump + 'px 0px 0px';
 }
window.onload = point();

我在窗口加载时尝试使div移动,谢谢大家。

4 个答案:

答案 0 :(得分:2)

在没有()

的情况下完成分配作为命名函数的事件处理程序

DEMO基于你的小提琴

var nump = 100; // setting a value that actually is visible
function point() {
  nump++;
  document.getElementById('point').style.margin = nump + 'px 0px 0px';
}
window.onload = point;

除非命名函数返回一个函数。

因为你正在使用jQuery:

var nump = 0;
function point() {
  nump++;
  document.getElementById('point').style.margin = nump + 'px 0px 0px';
}
$(function() {
  point(); // will move 1 pixel
});

也许你的意思是

$(function() {
  setInterval(function() {
    point(); // will move 1 pixel
  },100); // move one pixel every 100ms
});

答案 1 :(得分:0)

扩展@mplungjan's answer:您应该只使用JavaScript分配必要的样式,而不需要更改除margin-top属性之外的任何内容:

var nump = 0;
window.onload=function() {
  nump++;
  document.getElementById('point').style.marginTop = nump;
}

答案 2 :(得分:0)

1)您需要移交函数引用:

window.onload = point;

2)你的评论

  

我在窗口加载时尝试使div移动

让我假设,你想以递归的方式调用函数,这应该按照以下方式完成:

function point() {
    nump+=4;
    document.getElementById('point').style.margin = nump + 'px 0px 0px';
    // exemplary constraint to exit the loop, change to your liking
    if (nump < 300){setTimeout(point,20);}
}

your modified Example

答案 3 :(得分:0)

通过移动,你想说,像这样:http://jsfiddle.net/myC7J/1/

这样会添加setInterval

var interval;
window.onload = function(){ interval = setInterval(point, 100);}

编辑:

因为看起来你想制作游戏: 如果您想在DOM中使用位置,为什么不使用position: absolutetopleft 否则,你应该考虑使用Canvas。