javascript - 动态移动 DOM 元素位置

标签 javascript jquery html css dom

我正在动态生成 span 并放置它们的位置:

        $('#myObstacles').append("<span id=\"" +  test + randX + "\">" + items[randObj] + "</span>");
        document.getElementById("test"+randX).style.position="absolute";
        document.getElementById("test"+randX).style.left=randX;
        document.getElementById("test"+randX).style.top=randY;

然后我有 setInterval() 函数,它应该通过调用 moveSpans() 每隔一段时间移动这些 DOM 跨度:

    function moveSpans() {
        $("#myObstacles span").each(function (index, val) {
            val.style.top-=10;
        });
    }

出于某种原因,附加的 DOM 跨度到 #myObstacles 不会改变位置。

这是为什么?

最佳答案

正如 Wlises 所说,您需要坚持使用 jQuery 方法或核心 JavaScript 方法;如果您使用的是 jQuery 对象(它在回调函数中以 val 的形式返回,如上例所示),请坚持使用 jQuery 方法 .css()

因此:

  • 良好:val.css("top","-=10")
  • 错误:val.style.top -= 10(这是原生 JavaScript 属性,但对于 jQuery 对象,没有样式 属性。只有 .css() 访问器/修改器方法。)

由于您试图将 top 减少 10px,因此可以使用:val.css("top","-=10")

这是直接来自 jQuery 文档的解释:

As of jQuery 1.6, .css() accepts relative values similar to .animate(). Relative values are a string starting with += or -= to increment or decrement the current value. For example, if an element's padding-left was 10px, .css( "padding-left", "+=15" ) would result in a total padding-left of 25px.

关于javascript - 动态移动 DOM 元素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21957747/

相关文章:

javascript - 检测到输入文件控件中未选择文件

javascript - 将输入绑定(bind)到按钮单击函数的值

javascript - 自定义 map 图标可以替换现有的吗?

javascript - 网页中的计时器与 phantomjs 中的时间同步

jquery - HTML 按钮设计在所有浏览器中都具有渐变效果?

javascript - 克隆每个元素追加下一个元素

javascript - 获取网站访问者的语言环境(语言)?

php - 如何将 CSS 应用于另一个窗口中生成的表格?

javascript - 加载 React 组件后,如何调用 javascript 文件中存在的函数?

javascript - 使用 BabelJs 转译时如何忽略一段代码?