首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >速度JS和动态添加DOM元素

速度JS和动态添加DOM元素
EN

Stack Overflow用户
提问于 2015-05-22 12:53:46
回答 1查看 767关注 0票数 2

我有两个CodePens来描述我的问题。我正在使用速成动画反应渲染元素在一个页面上。

  • 工作CodePen
  • 非工作CodePen

目标是根据排名上下移动这些“文章”。它们是绝对定位的,我根据rank * height确定页面上的位置。

工作实例成功地显示了所有元素,然后在2秒的setTimeout之后,它将颠倒顺序。

非工作实例应该做同样的事情,但是它在页面周围移动的唯一一个是最终的DOM对象(id=article-5)。

示例之间唯一的区别是,工作实例已经在页面上呈现了DOM元素,而非工作实例则通过JavaScript呈现JavaScript。

代码语言:javascript
复制
var articlesContainer = document.getElementsByClassName('articles')[0];
for (var i = 1; i <= 5; i++) {
  articlesContainer.innerHTML = articlesContainer.innerHTML + '<div id=article-' + i + '></div>';
}

不太清楚为什么HTML元素的动态添加会破坏这一点。值得注意的是,前4个没有动画的元素都有类velocity-animating,这意味着速度至少尝试了动画对象,但似乎在某个地方失败了。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-22 13:32:41

当您执行articlesContainer.innerHTML = newHTML时,您正在卸载articlesContainer中的所有节点并挂载新节点。因此,速度/反应在分离的节点上运行,除了最后一个项目节点,它是唯一没有卸载的节点。改用document.createElementnode.appendChild

代码语言:javascript
复制
var articlesContainer = document.getElementsByClassName('articles')[0];
for (var i = 1; i <= 5; i++) {
  var div = document.createElement('div');
  articlesContainer.appendChild(div);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30397261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档