javascript - 如何使用 Javascript 将相应的图像插入到色样中?

标签 javascript html css shopify

我正在尝试在 Shopify 中为我的色样插入相应的背景图片。 现在,我已经准备好图标,并带有每种颜色的正确链接,但图标没有相应的图像,like this . 我正在尝试插入我的 assets file 中的图像,每个图像都已经以与颜色变化相同的方式命名。如何通过 Javascript 将每个图像分配给相应的图标?我知道我可以在 Liquid 中完成,但它对我不起作用,因为所有 html 都是由 Javascript 生成的。 这是我的 html

<ul class="new-variant-swatchs">
  <li class="new-variant-swatch js-new-variant-swatch is-active" data-val="Army Green" data-select="js-option-selector-0"></li>
  <li class="new-variant-swatch js-new-variant-swatch" data-val="Burgundy" data-select="js-option-selector-0"></li>
  <li class="new-variant-swatch js-new-variant-swatch" data-val="Camel Beige" data-select="js-option-selector-0"></li><li class="new-variant-swatch js-new-variant-swatch" data-val="Candy Red" data-select="js-option-selector-0"></li>
  <li class="new-variant-swatch js-new-variant-swatch" data-val="Caramel Brown" data-select="js-option-selector-0"></li><li class="new-variant-swatch js-new-variant-swatch" data-val="Charcoal Grey" data-select="js-option-selector-0"></li>
  <li class="new-variant-swatch js-new-variant-swatch" data-val="Heather Grey" data-select="js-option-selector-0"></li><li class="new-variant-swatch js-new-variant-swatch" data-val="Ivory White" data-select="js-option-selector-0"></li>
  <li class="new-variant-swatch js-new-variant-swatch" data-val="Muted Black" data-select="js-option-selector-0"></li><li class="new-variant-swatch js-new-variant-swatch" data-val="Navy Blue" data-select="js-option-selector-0"></li>
  <li class="new-variant-swatch js-new-variant-swatch" data-val="Rose Pink" data-select="js-option-selector-0"></li>

</ul>

我完全是 Javascript 的新手,这就是我正在尝试编写的内容,我知道这是错误的,我只是想提供一个想法,谢谢!

$(function() {
    if($(".new-variant-swatchs").length) {

        $(".new-variant-swatchs").each(function(i) {
            var $thisSelect = $(this);
            var $currentOption = $thisSelect.val();

            $thisSelect.find("li").each(function() {
                var $this = $(this);
                var $liText = $this.text();
                var $liVal = $this.val();

                $this.style.backgroundImage = "url({{ $liVal | handle | append: '.' | append: png | asset_url }}"

            }
        });
    }
});

提前致谢!

最佳答案

您可能需要重命名图像以匹配 data-val 属性值。例如,现在 Camel-Beige.png 可能需要重命名为 Camel Beige.png。

接下来您需要相应地更改您的 javascript 代码,如下所示:

$(function() {
    if($(".new-variant-swatchs").length) {
        $(".new-variant-swatchs").each(function(i) {
            var $thisSelect = $(this);
            var $currentOption = $thisSelect.data('val');
            $thisSelect.find("li").each(function() {
                var $this = $(this);
                var $liText = $this.text();
                var $liVal = $this.data('val');
                $this.css('background', 'url(/assets/'+$liVal+'.png) no-repeat');       
            });
        });
    }
});

不过,您可能必须放置适当的 Assets 相对路径。

关于javascript - 如何使用 Javascript 将相应的图像插入到色样中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43178074/

相关文章:

javascript - 从 Web 应用程序打开 SMS 编辑器

javascript - 控制台以连续模式记录函数并打印函数实现

javascript - 混合(图片+视频)类型的灯箱问题

javascript - 有没有办法在 document.ready 上加载 doubleclick.net 广告代码?

javascript - 将数据从 TextField 传递到网页

javascript - 在 JavaScript 中获取元素 ID 和通用元素

css - <div> 的绝对定位

javascript - 在 JavaScript 中处理大型网格数据集

带有相关链接的 jQuery 内容 slider

html - CSS:让 "overflow: hidden"隐藏顶部而不是底部?