使用Javascript更改元素的位置

时间:2017-08-04 09:46:52

标签: javascript html

这应该在每次循环时将段落的位置(ID为'Text')更改为右侧。它不起作用,我无法弄清楚如何解决它,所以如果有人能帮助我,我会很高兴。提前谢谢。

  var x = 0;

  d.style.position = "absolute";

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

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

2 个答案:

答案 0 :(得分:3)

这里有2个问题。

1)你从未定义过d。这导致脚本停在那里而不执行下一行代码。

2)你从未调用过myLoop()函数。

所有更正都是如此。

var x = 0;
var d = document.getElementById('Text');
d.style.position = "absolute";
myLoop();
  function myLoop () {
    setTimeout(function () {
      x += 10;
      d.style.left = x+'px';
      myLoop();
    }, 100)
  }
<div id="Text">Test </div>

除了这个解决方案之外,您可能需要查看setInterval函数,它会稍微减少您的代码。

var x = 0;
var d = document.getElementById('Text');
d.style.position = "absolute";
myLoop();
  function myLoop () {
    setInterval(function () {
      x += 10;
      d.style.left = x+'px';
    }, 100)
  }
<div id="Text">Test </div>

答案 1 :(得分:1)

尝试这个

d没有任何价值,因此请使用

定义d

d = document.getElementById('Text');

并调用您的函数myLoop以便其工作

var x = 0;
d = document.getElementById('Text');
d.style.position = "absolute";
myLoop();

function myLoop() {
  setTimeout(function() {
    x += 10;
    d.style.left = x + 'px';
    myLoop();
  }, 100)
}
<input type='text' id='Text'>