使用Javascript更改元素的位置

使用Javascript更改元素的位置,javascript,html,Javascript,Html,这是为了在每次循环时将段落(id为“Text”)的位置向右移动更多。但它不起作用,我也不知道如何修复它,所以如果有人能帮助我,我会非常高兴。先谢谢你 var x = 0; d.style.position = "absolute"; function myLoop () { setTimeout(function () { x += 10; document.getElementById('Text').style.left = x+'px';

这是为了在每次循环时将段落(id为“Text”)的位置向右移动更多。但它不起作用,我也不知道如何修复它,所以如果有人能帮助我,我会非常高兴。先谢谢你

  var x = 0;

  d.style.position = "absolute";

  function myLoop () {
    setTimeout(function () {
      x += 10;
      document.getElementById('Text').style.left = x+'px';
      myLoop();
    }, 100)
  }

(这是脚本中的所有内容)

这里有两个问题

1) 你从来没有定义过d。这会导致在不执行下一行代码的情况下停止脚本

2) 您从未调用过
myLoop()
函数

所有的修正都是如此

var x=0;
var d=document.getElementById('Text');
d、 style.position=“绝对”;
myLoop();
函数myLoop(){
setTimeout(函数(){
x+=10;
d、 style.left=x+'px';
myLoop();
}, 100)
}
测试
试试这个

d
没有任何值,因此使用

d=document.getElementById('Text')

然后调用你的函数
myLoop
,这样它就可以工作了

var x=0;
d=document.getElementById('Text');
d、 style.position=“绝对”;
myLoop();
函数myLoop(){
setTimeout(函数(){
x+=10;
d、 style.left=x+'px';
myLoop();
}, 100)
}

那么,
d
文档的缓存值。getElementById('Text')
?那你为什么不重用
d
?如果这就是脚本的全部内容,
d
未定义,这一行通过抛出错误中断执行。你的控制台怎么说?你最初在哪里调用
myLoop()
函数?你应该定义
d
,这样它就会被缓存并大大提高性能。@JeremyThille绝对正确。使用
setInterval
很好的替代方法,但现在是
myLoop()
函数没用:)@JeremyThille No.No.OP可能想在点击按钮时调用
myLoop()
?在循环内部重用
d
(性能改进),我会说出来,我做到了。