使用javascript动态创建div的动画

使用javascript动态创建div的动画,javascript,animation,html,Javascript,Animation,Html,我正在尝试使用javascript制作一个动态创建的div的动画,该div的id在创建时被分配,一切正常,直到我尝试制作其中一个div的动画,我正在尝试以下操作: function start() // Called from a button click { var moveDiv= document.getElementById('Id0'); // Id0 is the Id of the div to move animate(moveDiv); // Recursive an

我正在尝试使用javascript制作一个动态创建的div的动画,该div的id在创建时被分配,一切正常,直到我尝试制作其中一个div的动画,我正在尝试以下操作:

function start() // Called from a button click
{

  var moveDiv= document.getElementById('Id0'); // Id0 is the Id of the div to move
  animate(moveDiv); // Recursive animate
}

function animate(inDiv) 
{
  inDiv.style.left = parseInt(inDiv.style.left)+1+'px';
  setTimeout(animate,20); // Recursive call
}
我知道这应该使div无限向左移动。但是什么都没有发生,我也不知道为什么,我不认为这是我动态创建div的事实,因为我已经检查了所有的Id,它们都存在,所以我不认为这是因为它找不到Id0,但这里有一段我的div创建代码:

for(var i=0; i<ca.length; i++)
      {
          var c = ca[i].trim();
          var start = c.indexOf('"coursename":"') + 14;
          var end = c.indexOf('","coursemark":"');
          var CC = c.substring(start,end);

          var start = c.indexOf('","coursemark":"') + 16;
          var end = c.indexOf('%"')+1;
          var CM = c.substring(start,end);
          var idCount = i;
          var div = document.createElement("div");
          div.style.width = "180px";
          div.style.height = "75px";
          div.style.backgroundColor = "rgba(0,100,175,0.8)";
          div.style.color = "white";
          div.style.marginTop = "2%";
          div.style.marginLeft = "50%";
          div.id = "sortID"+idCount;
          div.innerHTML = "Course Name : " + CC +  " Course Mark : " + CM + " Id : " + div.id;
          document.body.appendChild(div);

      }
for(var i=0;i两个问题

function start() // Called from a button click
{
  var moveDiv= document.getElementById('Id0'); // Id0 is the Id of the div to move
  animate(moveDiv); // Recursive animate
}
  • 没有ID为
    Id0
    的元素。所有生成的元素ID看起来都像
    sortID…
然后

function animate(inDiv) 
{
  inDiv.style.left = parseInt(inDiv.style.left)+1+'px';
  setTimeout(animate,20); // Recursive call
}
  • inDiv.style.left
    从未启动过
  • 您没有将
    inDiv
    传递给递归
    动画
    调用

因此,首先检查您的元素引用。然后确保您正确设置了div的位置,或者处理了尚未设置div的场景。最后确保递归地传递
inDiv

Uhm,您正在创建的元素的ID类似于
sortID8
,而不是
Id8
,左侧和顶部样式都有如果元素没有位置,则es不工作?您没有在setTimeout中向函数传递任何参数。请尝试更改为:
setTimeout(function(){animate(document.getElementById('Id0'))},20);
我不敢相信我没有看到,这就是我在凌晨2点编码时得到的结果。这解决了问题,非常感谢。