js复制多一条同样的元素

在做后台系统时通常有这样的情况,点击[+]出现一条同样的元素,且可以移除:
这里写图片描述

HTML:

<table class="table" id="property">
    <tr>
        <td>
            <a href="javascript:;" onclick="addFilterAttrs(this)"><span style="float:left;line-height:30px;">[+]</span></a>
            <div class="col-xs-4"><select class="form-control" onChange="changeCats(this)" id="property_num" name="property_num"><option value="0">请选择</option><option value='1'>用途</option><option value='2'>材质</option></select></div>
            <div class="col-xs-7"><input type="text" class="form-control" id="property_val" name="property_val"></div>
        </td>
    </tr>
</table>

JS:

//新增一个筛选属性 : 规格
    function addFilterAttr(obj)
    {
        var src = obj.parentNode.parentNode;            //以 Node 对象的形式返回指定节点的父节点
        var tbl = document.getElementById('tbody-attr');
        var row  = document.getElementById('tbody-attr').insertRow(tbl.rows.length);        //insertRow() 方法用于在表格中的指定位置插入一个新行
        var cell = document.getElementById('tbody-attr').insertRow(tbl.rows.length).insertCell(-1);                 //insertCell() 方法用于在 HTML 表的一行的指定位置插入一个空的 <td> 元素。
        cell.innerHTML = obj.parentNode.parentNode.cells[0].innerHTML.replace(/(.*)(addFilterAttr)(.*)(\[)(\+)/i, "$1removeFilterAttr$3$4-");  //innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML。
    }
    //删除一个筛选属性
    function removeFilterAttr(obj)
    {
        var src = obj.parentNode.parentNode;            //以 Node 对象的形式返回指定节点的父节点
        var tbl = document.getElementById('tbody-attr');
        var row = src.rowIndex;
        if(src != null){
            tbl.deleteRow(row);
        }
    }

到这里就可以实现了,那么现在问题又来了……,我该怎么取同一个id的下拉框的多条值呢?

//获取规格值id
var specId = "";
$("[name=spec_num]").each(function(){
     specId += $(this).val() + ",";
});
//获取规格值对象的集合
var SpecValues = '[';
    var tag = true;
    $("#tbody-attr td").each(function () {
         var spValueName = $(this).find("[name=spec_val]").val();
        var spValueId = $(this).find("[name=spec_num]").val();
        SpecValues += '{"spValueName" : "' + spValueName + '" , "spValueId" : "' + spValueId + '"},'
 });

还有我该怎么回显呢?如果有多条数据的话

var data = [{"propertyName" : "rrrr,lll" , "propertyId" : "1"},{"propertyName" : "ercerv,ervv" , "propertyId" : "2"}];
$.each(data,function(i,project){
    var spValueName = project.propertyName; 
    $('#spec_val'+i).val(spValueName);
    addFilterAttr();
}) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值