table表格,增加删除

思路:

      1,定义全局作用域变
        2,调用生成table表格函数,生成页面
        3,给新增button按钮,添加事件
             调用生成table表格的函数

        4,定义生成table表格函数函数
               将字符串写入到tbody标签中
            调用 给 删除标签,添加事件函数
            说明:因为我们给删除标签添加事件,必须要和渲染生成页面一起执行
                 每次渲染生成页面,都要给button标签,添加删除事件,因此,这两个操作,必须要绑定执行
                 把这两个操作,都写在渲染生成页面的函数中

        5,定义函数,给button标签,添加删除效果 l函数
              再次调用生成table表格函数

代码:

姓名:<input type="text"><br>
年龄:<input type="number"><br>
性别:男<input type="radio" value="男" name="sex">
女<input type="radio" value="女" name="sex">
城市:<select>
    <option value="北京">北京</option>
    <option value="上海">上海</option>
    <option value="重庆">重庆</option>
    <option value="天津">天津</option>
    <option value="武汉">武汉</option>
    <option value="广州">广州</option>
</select>
<button name="add">新增</button>



<table>
    <thead>
        <tr>
            <td>序号</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>性别</td>
            <td>城市</td>
            <td> </td>
        </tr>

    </thead>
    <tbody>

    </tbody>
</table>
<script>
    var arr = [{
            name: '张一',
            age: 18,
            sex: '男',
            city: '北京'
        },
        {
            name: '张二',
            age: 18,
            sex: '男',
            city: '北京'
        },
        {
            name: '张三',
            age: 18,
            sex: '男',
            city: '北京'
        },
        {
            name: '张四',
            age: 18,
            sex: '男',
            city: '北京'
        },
        {
            name: '张五',
            age: 18,
            sex: '男',
            city: '北京'
        },
        {
            name: '张六',
            age: 18,
            sex: '男',
            city: '北京'
        },
        {
            name: '张七',
            age: 18,
            sex: '男',
            city: '北京'
        },
        {
            name: '张八',
            age: 18,
            sex: '男',
            city: '北京'
        },
    ];
    var oTb = document.querySelector('tbody');
    // var oBtn = document.querySelector('button');
    oTb.innerHTML = setTab();
    del();
    var oBtn = document.querySelector('[name="add"]')


    setTab();

    oBtn.onclick = function () {
        //   获取姓名的数据
        var oIptName = document.querySelector('[type="text"]').value;
        //   获取年龄数据
        var oIptAge = document.querySelector('[type="number"]').value;
        //   获取性别数据
        var oIptSex = document.querySelectorAll('[type="radio"]');

        var oIptSexVal = 0;
        oIptSex.forEach(function (item) {
            if (item.checked === true) {
                oIptSexVal = item.value;
            }
        })
        //   获取城市标签
        var oIptCity = document.querySelector('select').value;
        var obj = {
            name: oIptName,
            age: oIptAge,
            sex: oIptSexVal,
            city: oIptCity
        };
        arr.push(obj);
        oTb.innerHTML = setTab();

        setTab();
    }

//增加
function setTab() {
var str = ’ ';
arr.forEach(function (item, key) {
str += ‘’;
str += <td>${key+1}</td>;
for (var k in item) {
str += <td>${item[k]}</td>;
}

            str += `<td> <button name="del"    index="${key}">删除</button> </td>`;
            str += '</tr>';
        });

        // return str;
        oTb.innerHTML = str;
        del();
        // oTb.innerHTML =del();

    }

//删除
function del() {
var oBtns = document.querySelectorAll(‘tbody button’);
oBtns.forEach(function (item) {
item.onclick = function () {
var index = item.getAttribute(‘index’);
arr.splice(index, 1);
oTb.innerHTML = setTab();
setTab();
}
});
}

在Vue.js中实现表格的增删功能,通常会结合Vuex(状态管理库)来管理和同步数据,以及事件监听和指令来操作DOM。以下是基本步骤: 1. **数据模型**: 创建一个数组,在Vuex store中存储表格的数据。例如: ```javascript state: { tableData: [ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' } ] } ``` 2. **模板渲染**: 使用`v-for`遍历数据,并提供添删除按钮: ```html <table> <tr v-for="(item, index) in $store.state.tableData"> <!-- ... item内容 --> <td><button @click="deleteRow(index)">删除</button></td> </tr> <tr> <td><input type="text" v-model="$store.state.newRow.name" @keyup.enter="addRow"></td> <td><button @click="addRow">添</button></td> </tr> </table> ``` 3. **方法实现**: - `deleteRow(index)`:从`tableData`中移除对应索引的项,并更新store状态。 - `addRow()`:将新的行添到`tableData`数组末尾,然后清除新行输入框的内容。 4. **Vuex操作**: - 更新`deleteRow`方法需要通过`this.$store.dispatch('deleteRow', index)`来触发动作并更新state。 - 对于`addRow`,可以直接修改state,因为一般不需要通知所有组件,但在大规模应用中可能需要创建一个新的mutation。 5. **事件监听和指令**: 如果有其他组件需要响应的变化,可以使用Vue的`@update:tableData`监听器,或者自定义事件系统如Event Bus。 ```javascript // 示例中的actions和mutations可能长这样 actions: { deleteRow({ commit }, index) { this.$store.dispatch('removeItem', index); }, addRow({ commit }) { commit('addItem', { name: '' }); } }, mutations: { addItem(state, newItem) { state.tableData.push(newItem); }, removeItem(state, index) { state.tableData.splice(index, 1); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值