layui动态添加和删除html内容

效果图

**功能描述:**点击新增按钮,该table之后新增一个同样的table,点击删除按钮删除当前table,只有一个时不能再删除。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3KEP35AR-1604280713999)(C:\Users\180605\AppData\Roaming\Typora\typora-user-images\image-20201031112015977.png)]

html模板内容

<table border="1" class="layui-table">
   <tr>
        <td>问题描述</td>
        <td>
            <div class="layui-form-item">
                <div class="layui-inline">
                    <div class="layui-input-inline" style="width: 40px;">
                        <button id="add-question-btn" type="button"
                                class="layui-btn layui-btn-sm layui-btn-radius"
                                onclick="addQuestion(this)">
                            <i class="layui-icon"></i>新增
                        </button>
                    </div>
                </div>
                <div class="layui-inline">
                    <div class="layui-input-inline" style="width: 40px;">
                        <button id="del-question-btn_0" type="button"
                                class="layui-btn layui-btn-sm layui-btn-radius"
                                onclick="checkDelQuestion(this)">
                            <i class="layui-icon"></i>删除
                        </button>
                    </div>
                </div>
            </div>
        </td>
    </tr>
    <tr>
        <td style="text-align: center">问题<span style="color: red">*</span></td>
        <td>
            <div class="layui-form-item">
                <div class="layui-input-block">
                    <input id="question_0" name="questionTitle" type="text" style="padding-left: 0;" class="layui-input" />
                </div>
            </div>
        </td>
    </tr>
    <tr>
        <td style="text-align: center">问题描述<span style="color: red">*</span></td>
        <td>
            <div class="layui-form-item">
                <div class="layui-input-block">
                    <input id="questionDescription_0" name="questionDescription" type="text" class="layui-input"/>
                </div>
            </div>
        </td>
    </tr>
    <tr>
        <td style="text-align: center">附件上传</td>
        <td>
            <div class="layui-form-item">
                <div class="layui-inline">
                    <div class="layui-input-block" style="width:800px">
                        <input id="questionFileCode_0" name="questionFileCode" type="text" readonly
                               placeholder="" autocomplete="off" class="layui-input"  hidden>
                        <input id="questionFileName_0" name="questionFileName" type="text" readonly
                               placeholder="" autocomplete="off" class="layui-input" >
                    </div>
                </div>
                <div class="layui-inline">
                    <button id="question_upload_0" name="question_upload_btn" type="button"
                            class="layui-btn layui-btn-sm layui-btn-radius">
                        <i class="layui-icon"></i>上传附件
                    </button>
                </div>
            </div>
        </td>
    </tr>
</table>

js代码

// 新增方法
function addQuestion(obj) {
    var table = $(obj).parent().parent().parent().parent().parent().parent();
    var newTable = table.clone();
    // 清空新table
    newTable.find(":input").each(function(){
        $(this).val("");
    });
    table.after(newTable);
    // 遍历html中该name值的所有input标签,并设置标签的id属性值
    $("input[name='questionTitle']").each(function (i) {
        $(this).attr("id","question_"+i);
    });
    $("input[name='questionDescription']").each(function (i) {
        $(this).attr("id","questionDescription_"+i);
    });
    $("input[name='questionFileCode']").each(function (i) {
        $(this).attr("id","questionFileCode_"+i);
    });
    $("input[name='questionFileName']").each(function (i) {
        $(this).attr("id","questionFileName_"+i);
    });
    $("button[name='question_upload_btn']").each(function (i) {
        $(this).attr("id","question_upload_"+i);
        // 初始化每个table的上传附件按钮
        initSimpleUpload("question_upload_"+i, "consultOrder-form", "questionFileCode_" + i, "questionFileName_"+i);
    });
    $("button[id='del-question-btn_0']").each(function (i) {
        $(this).attr("id","del-question-btn_"+i);
    });
}

// 删除方法
function checkDelQuestion(obj) {
    var arr = obj.id.split("_");
    if(arr[1] == 0){
        layer.alert("该行已是第一行,无法删除!")
        return false;
    }else{
        $(obj).parent().parent().parent().parent().parent().parent().remove();
        // 删除后重新遍历,给html的input的id属性赋值
        $("input[name='questionTitle']").each(function (i) {
            $(this).attr("id","question_"+i);
        });
        $("input[name='questionDescription']").each(function (i) {
            $(this).attr("id","questionDescription_"+i);
        });
        $("input[name='questionFileCode']").each(function (i) {
            $(this).attr("id","questionFileCode_"+i);
        });
        $("input[name='questionFileName']").each(function (i) {
            $(this).attr("id","questionFileName_"+i);
        });
        $("button[name='question_upload_btn']").each(function (i) {
            $(this).attr("id","question_upload_"+i);
            initSimpleUpload("question_upload_"+i, "consultOrder-form", "questionFileCode_" + i, "questionFileName_"+i);
        });
        $("button[id='del-question-btn_0']").each(function (i) {
            $(this).attr("id","del-question-btn_"+i);
        });
    }
}

// 遍历获取多个table中的值
function getQuestionArrayData(type) {
    if(type == 1){
        $("input[name='questionTitle']").each(function () {
            questionTitleStrArr.push($(this).val());
        });
        $("input[name='questionDescription']").each(function () {
            questionDescriptionStrArr.push($(this).val());
        });
        $("input[name='questionFileCode']").each(function () {
            questionFileCodeStrArr.push($(this).val());
        });
        $("input[name='questionFileName']").each(function () {
            questionFileNameStrArr.push($(this).val());
        });
    } else {
        $("input[name='questionTitle2']").each(function () {
            questionTitleStrArr.push($(this).val());
        });
        $("input[name='questionDescription2']").each(function () {
            questionDescriptionStrArr.push($(this).val());
        });
        $("input[name='questionFileCode2']").each(function () {
            questionFileCodeStrArr.push($(this).val());
        });
        $("input[name='questionFileName2']").each(function () {
            questionFileNameStrArr.push($(this).val());
        });
    }
}

上传附件方法 initSimpleUpload() 参考我另一篇博客:
layui上传多个附件且能删除附件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果你使用 layui 表格组件,可以使用下面的代码实现动态添加行: ```javascript // 获取表格对象 var table = layui.table; // 添加行数据 var data = [{ id: '10001', name: '张三', age: 20, city: '北京' }]; // 添加行 table.reload('tableId', { data: data }); ``` 其中,`tableId` 是你的表格的 lay-filter 属性值,`data` 是要添加的行数据。这里使用了 `table.reload()` 方法,因为它可以重新渲染表格并添加新的数据。 如果你不使用表格组件,可以使用 jQuery 或原生 JavaScript 操作 DOM 元素实现动态添加行。例如,如果你的表格是一个 `<table>` 元素,可以使用下面的代码动态添加一行: ```javascript // 获取表格对象 var table = document.getElementById('tableId'); // 创建新行 var row = table.insertRow(); // 插入单元格 var cell1 = row.insertCell(); cell1.innerHTML = '10001'; var cell2 = row.insertCell(); cell2.innerHTML = '张三'; var cell3 = row.insertCell(); cell3.innerHTML = '20'; var cell4 = row.insertCell(); cell4.innerHTML = '北京'; ``` 其中,`tableId` 是你的表格的 ID 属性值。这里使用了 `insertRow()` 和 `insertCell()` 方法来创建和插入新行和单元格,然后使用 `innerHTML` 属性设置单元格的内容。 ### 回答2: 在使用layui动态添加行时,我们需要借助表格组件的相应功能。以下是一个例子: 首先,我们需要创建一个html的表格结构,可以使用layui的table组件,例如: ``` <table id="demo" lay-filter="test"></table> ``` 接下来,我们使用JavaScript代码来动态添加行,具体步骤如下: 1. 使用layui的table.render()方法初始化表格组件: ``` layui.use('table', function(){ var table = layui.table; table.render({ elem: '#demo', // 表格id url: '/data', // 表格数据接口 cols: [[ // 表头 {field: 'id', title: 'ID'}, {field: 'username', title: '用户名'}, {field: 'email', title: '邮箱'} ]] }); }); ``` 2. 获取表格对象,并使用其方法addRow()来添加行: ``` var table = layui.table; var data = [ {id: '1', username: '张三', email: 'zhangsan@example.com'}, {id: '2', username: '李四', email: 'lisi@example.com'} ]; table.addRow('test', data); ``` 其中,'test'是表格的filter值,表示我们要对哪一个表格进行操作。data是一个包含了要添加的行的数据的数组。 总结起来,通过表格组件的初始化和添加行的方法,我们可以实现在layui动态添加行的功能。 ### 回答3: 在使用layui动态添加行时,需要使用table组件,并结合jQuery进行操作。具体步骤如下: 1. 在页面中引入layuijQuery的库文件。 2. 在HTML中定义一个table元素,设置一个唯一的id属性,用于后续的操作。 3. 编写一个函数,在函数中实现动态添加行的逻辑。函数的基本思路是先获取到table的jQuery对象,然后使用append方法在table中添加一行。可以通过拼接HTML字符串的方式创建一行的内容,也可以通过jQuery的方式创建一个tr元素,再通过append方法将其添加到table中。 4. 在需要添加行的地方调用该函数。可以通过点击按钮、输入框回车等交互方式触发添加行的操作。 5. 在table中添加行后,可以根据需要设置每一列的具体内容。可以通过jQuery的方式找到相应的td元素,再设置其text或html属性来修改内容。 6. 如果需要删除行,可以在每一行的操作列中添加一个删除的按钮。绑定点击事件,通过获取到所在行的jQuery对象,再调用remove方法进行删除。 总结起来,layui动态添加行的操作主要包括定义table元素、编写添加行的函数、调用函数添加行、设置行的具体内容以及删除行等步骤。通过这些步骤,我们可以实现在layui动态添加行的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值