html页面的排列组合算法怎么做?最后需要显示数据到table上

现在做一个商城后台,有个需求,就是点击选择商品规格后,动态的出现按照选择的规格排列组合出现的一些商品规格组合,并分配sku

图片说明

请问这样的在js里面写逻辑可以实现吗?要怎么实现?还是放在后台去处理比较好?

把你的选择传到后面,后面根据条件在数据库中查询出来,再用json传给你,你解析一下json就好

你要是用js设置,你可以试试jQuery写一下,具体太复杂了,你自己试试吧

两个嵌套循序就可以。如果数据量不大或逻辑不复杂的话,JS可以独立完成。

(关于SKU是在网上搜的,编号也不懂,若有误,请自己按照需求自行修正)

1、SKU是产品编号,指代产品规格(尺码、颜色)、单价、库存等销售属性。

当选择了尺码和颜色时,需要唯一确定SKU编号。

2、想要自动分配SKU编号,就看商城制定的是什么样的规则;

假说SKU编号规则是 PS{尺码}C{颜色}。示例M号黑色的,表示为 PSmCblack

将尺码和颜色对应的数值放到标签的data属性中

示例页面元素定义:

<div>
    <div>
        <label>尺码:</label>
        <ul id="list_size">
            <li data-no="m"><input type="checkbox">M</li>
            <li data-no="x"><input type="checkbox">X</li>
            <li data-no="xl"><input type="checkbox">XL</li>
        </ul>
    </div>
    <div>
        <label>颜色:</label>
        <ul id="list_color">
            <li data-no="black"><input type="checkbox">黑色</li>
            <li data-no="red"><input type="checkbox">红色</li>
            <li data-no="white"><input type="checkbox">白色</li>
        </ul>
    </div>
    <button id="btnSelect">选择</button>
    <hr>
    <!-- 呈现选择的数据 -->
    <table id="products">
        <thead>
            <tr>
                <th>尺码</th>
                <th>颜色</th>
                <th>价格</th>
                <th>SKU</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
</div>

选择事件处理

//选择处理事件
document.getElementById('btnSelect').addEventListener("click", function(){
    //选择的尺码
    let selectedSizeds = document.querySelectorAll("#list_size input:checked");
    //选择的颜色
    let selectedColors = document.querySelectorAll("#list_color input:checked");
    //校验略
    //合成
    let arrContent = [];
    selectedSizeds.forEach(item_outer => {  //遍历尺寸
        let sizeNode = item_outer.parentNode;
        //尺码编号
        let size = sizeNode.dataset.no; 
        selectedColors.forEach(item_inner => {  //遍历颜色
            let colorNode = item_inner.parentNode;
            //颜色编号
            let color = colorNode.dataset.no;
            let skuno = `PS${size}C${color}`;

            //行数据
            arrContent.push(`<tr><td>${sizeNode.innerText}</td><td>${colorNode.innerText}</td><td><input class="txt" /></td><td>${skuno}</td></tr>`);
        });
    });
    //写入到列表中
    document.querySelector("#products tbody").innerHTML = arrContent.join("");
});

这个最好用后台处理成数组在前台循环就是了,js写就
麻烦了