商品suk规格简写

这篇博客展示了如何在Vue.js中使用`v-for`指令动态渲染数据,并结合`v-bind:key`实现列表渲染。同时,通过`v-on:click`事件监听处理函数`handelClickAddActive`,实现了点击激活元素的背景颜色切换。示例代码包含了一个多级筛选的数据结构,用于颜色、重量和尺寸的选择。
摘要由CSDN通过智能技术生成
<template>
  <div class="home">
    <div class="suk" v-for="(item, index) of data" :key="index">
      <div style="font-size: 16px; font-weight: 700;">
        {{item.title}}
      </div>
      <span v-for="(c,i) of item.children" :key="i" :class="arr[index] == c.id ? 'active' : ''"
        @click="handelClickAddActive(index,c.id)">{{c.suk}}</span>
    </div>
  </div>
</template>

<script setup>
import { reactive } from 'vue'


const arr = reactive([])


/***
 * @descirption 模拟后端返回数据
 */
const data = reactive([
  {
    title: '颜色', children: [
      { suk: '黄色', id: 1 },
      { suk: '黄色', id: 2 }
    ],
  },
  {
    title: '重量', children: [{
      suk: '0.5kg',
      id: 3
    }, {
      suk: '1kg',
      id: 4
    }]
  },
  {
    title: '尺寸', children: [{
      suk: '20',
      id: 5
    }, {
      suk: '15',
      id: 6
    }],
  },
])


/**
 * 
 * @param {*} i 
 * @param {*} id 
 * @descirpton 初始化为第一个
 */
 data.forEach((item,index) => {
   arr[index] = item.children[0].id
 })



/**
 * 
 * @param {*} i 
 * @param {*} id 
 * @descirpton 赋值
 */
const handelClickAddActive = (i, id) => {
  /***
   * @descirpton 这是 V3 
   */
  arr[i] = id

  /***
   * @descirpton 这是 V2
   */
  //  this.$set(this.arr,i,id)
}





</script>
<style lang="scss">
.home {
  height: 100%;
  width: 100%;
  overflow: hidden;
}

.suk {
  display: flex;

  span {
    border-radius: 5px;
    border: 1px solid #ccc;
    margin-left: 20px;
  }
}

.active {
  background: red;
  color: #fff;
}
</style>

好的,以下是一个使用 JavaScript 实现的动态生成 SKU 的示例代码: ```javascript // SKU 数据 var skuData = [ { name: '颜色', values: ['红色', '绿色', '蓝色'] }, { name: '尺寸', values: ['S', 'M', 'L', 'XL'] }, { name: '材质', values: ['棉质', '丝绸', '涤纶'] } ]; // 生成 SKU function generateSKU() { var result = []; var selected = document.querySelectorAll('select'); for (var i = 0; i < selected.length; i++) { result.push(selected[i].value); } return result.join('-'); } // 更新 SKU 选项 function updateOptions() { var selected = document.querySelectorAll('select'); var options = []; for (var i = 0; i < selected.length; i++) { options.push(selected[i].value); } for (var i = 0; i < selected.length; i++) { var select = selected[i]; var index = i; for (var j = i + 1; j < selected.length; j++) { index *= skuData[j].values.length; } for (var j = 0; j < skuData[i].values.length; j++) { select.options[j] = new Option(skuData[i].values[j], j); var enabled = false; var value = skuData[i].values[j]; for (var k = 0; k < options.length; k++) { if (k != i && options[k].indexOf(value) >= 0) { enabled = true; break; } } select.options[j].disabled = !enabled; } select.selectedIndex = Math.floor(options[i] / index); } } // 生成表单 var form = document.createElement('form'); for (var i = 0; i < skuData.length; i++) { var label = document.createElement('label'); label.textContent = skuData[i].name + ': '; form.appendChild(label); var select = document.createElement('select'); select.addEventListener('change', function() { updateOptions(); document.querySelector('#sku').value = generateSKU(); }); form.appendChild(select); for (var j = 0; j < skuData[i].values.length; j++) { var option = new Option(skuData[i].values[j], j); select.options.add(option); } } // SKU 输入框 var skuLabel = document.createElement('label'); skuLabel.textContent = 'SKU: '; form.appendChild(skuLabel); var skuInput = document.createElement('input'); skuInput.id = 'sku'; skuInput.type = 'text'; skuInput.readOnly = true; form.appendChild(skuInput); // 添加表单到页面 document.body.appendChild(form); // 初始化选项 updateOptions(); document.querySelector('#sku').value = generateSKU(); ``` 以上代码中,我们先定义了一个 SKU 数据数组 `skuData`,其中包含了属性名称和属性值。接着,我们使用 JavaScript 动态创建表单元素,并通过循环生成表单项和选项。在生成选项时,我们根据已选的属性值来动态计算当前选项是否可用,并将其设置为对应的 `disabled` 属性。在用户选择选项时,我们通过 `change` 事件来更新已选的属性值,并重新生成可用的选项和 SKU。最后,我们将表单添加到页面中。 运行以上代码,您将会得到一个动态生成 SKU 的表单,其中包含了所有的属性名称和属性值。您可以根据需要修改 `skuData` 数组中的属性名称和属性值,来生成不同的 SKU 表单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值