Javascript 动态移动 IMG 元素

标签 javascript jquery html css shopify

在某些内容之间动态移动 img 元素时遇到问题。

之前:

    <img id="moveme" class="product__image lazyload-fade lazyautosizes lazyloaded"src="https://cdn.shopify.com/s/files/1/2997/4910/files/blackjacket_overlay.png?9630" style="
    position: absolute;
">
<div class="slick-slide" data-slick-index="0" aria-hidden="true" role="tabpanel" id="slick-slide10" style="width: 447px;" tabindex="-1" aria-describedby="slick-slide-control10"><div><a class="fancybox" href="" tabindex="-1" style="width: 100%; display: inline-block;"></div>

  <div class="slick-slide slick-current slick-active" data-slick-index="1" aria-hidden="false" role="tabpanel" id="slick-slide11" style="width: 447px;" aria-describedby="slick-slide-control11"><div><a class="fancybox" href="https://cdn.shopify.com/s/files/1/2997/4910/files/blackjacket_overlay.png?9630" tabindex="0" style="width: 100%; display: inline-block;">
        <div class="product-main-image selected" data-image-id="12046975205420" style="position: absolute; overflow: hidden; display: block;">
            <img id="3971000074284" class="product__image lazyload-fade lazyautosizes lazyloaded" >
    </div>

之后:

<div class="slick-slide" data-slick-index="0" aria-hidden="true" role="tabpanel" id="slick-slide10" style="width: 447px;" tabindex="-1" aria-describedby="slick-slide-control10"><div><a class="fancybox" href="" tabindex="-1" style="width: 100%; display: inline-block;"></div>

  <div class="slick-slide slick-current slick-active" data-slick-index="1" aria-hidden="false" role="tabpanel" id="slick-slide11" style="width: 447px;" aria-describedby="slick-slide-control11"><div><a class="fancybox" href="https://cdn.shopify.com/s/files/1/2997/4910/files/blackjacket_overlay.png?9630" tabindex="0" style="width: 100%; display: inline-block;">
        <div class="product-main-image selected" data-image-id="12046975205420" style="position: absolute; overflow: hidden; display: block;">
          <!-- I WANT TO DYNAMICALLY PUT THE FOLLOWING ONE IMG ELEMENT HERE USING JAVASCRIPT -->
    <img id="moveme" class="product__image lazyload-fade lazyautosizes lazyloaded"src="https://cdn.shopify.com/s/files/1/2997/4910/files/blackjacket_overlay.png?9630" style="
    position: absolute;
">
            <img id="3971000074284" class="product__image lazyload-fade lazyautosizes lazyloaded" >
    </div>

最佳答案

使用 insertBefore https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore

您可以使用 createElement 创建新图像,使用 setAttribute 添加属性,这就是您的新节点

const newImage = document.createElement('img');
newImage.className = 'product__image lazyload-fade lazyautosizes lazyloaded';
newImage.setAttribute('id', 'moveme');
newImage.setAttribute('src', 'https://cdn.shopify.com/s/files/1/2997/4910/files/blackjacket_overlay.png?9630');
newImage.style.position = 'absolute';
const parent = document.querySelector('div[data-image-id="12046975205420"]');
const refNode = document.querySelector('#3971000074284');
parent.insertBefore(newImage, refNode);

选择已有的图像,即引用节点,然后 选择容器div,即父节点

parentNode.insertBefore(newNode, referenceNode)

关于Javascript 动态移动 IMG 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57452921/

相关文章:

javascript - 如何从 iframe 中获取当前 iframe 偏移量?

javascript - jQuery 验证器错误放置

javascript 不适用于 URL 重定向

javascript - 使用 Javascript 在特定数组值之前添加所有数组值

javascript - AngularJS Controller 的生命周期是什么?

javascript - 当将 `track by $index` 与过滤器一起使用时,我收到错误。怎么解决这个问题?

jquery - 在 jquery 切换中单击时更改按钮文本(显示/隐藏/显示)

jquery - 文件准备好后如何调用Backbone初始路由?

html - 为什么 django 在使用 bootstrap 时在页面顶部显示 white lite

javascript - 在 JavaScript 中添加 CSS 样式时,加法赋值运算符是否有效?