通过按钮添加、删除表格及表单元素

写页面的时候有个需求:通过点击“添加”“删除”按钮,添加和删除表格里的一行。表格里除了文字还有些按钮、下拉选框之类的类似于这种。

 刚学前端很多知识都欠缺,查了些资料,特此记录一下。

 基本思路是通过按钮来触发JS函数,然后对HTML进行操作。

首先需要了解的是怎么用代码去生成HTML元素,生成后怎么进行操作。

  1. 创建元素:有两种方法

    第一种:节点 html document 对象教程

    文档对象方法:createElement()、createTextNode() 分别为用给定的标签名称创建一个新的元素节点、创建一个文本节点

    //先建立一个tr,td
    var tr = document.createElement("tr");
    var td_age = document.createElement("td");
    
    
    //创建文本节点
    var text_age = document.createTextNode("age");
    td_age.appendChild(text_age);
    //或按钮节点
    var button_age = document.createElement("BUTTON");
    var text_age = document.createTextNode('age');
    button_age.appendChild(text_id);
    td_age.appendChild(button_age);
    //把td加到tr
    
    tr.appendChild(td);
    

    操作节点属性的方法比较麻烦。见教程w3school

    第二种方法:

    //先建立一个tr,td
    var tr = document.createElement("tr");
    var td = document.createElement("td");
    
    td.innerHTML='<button type="button" class="button1">我是按钮</button>' //html方法创建
    //.button1{font-size:44px;}方便css控制
    
    var tr = document.createElement("tr");
    //把td加到tr
    
    tr.appendChild(td);
    
  2. 删除元素

节点.remove()

小例子,主要说明如何创建常见的表单项及文本

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>


    <style>
        .button1{
            font-size:44px;
        }
    </style>
</head>
<body>
<div><a>动态添加表格一行</a></div>

<table id="table1" border="1" >
    <tr>
        <th id="td_text">文本</th>
        <th id="td_butt">按钮</th>
        <th id="td_input">输入框</th>
    </tr>
</table>
<div><input type="button" id="btn_add_row" value="添加"><input type="button" id="btn_del_row" value="删除"></div>
<script>

    document.getElementById("btn_add_row").onclick = function () {

        var table =document.getElementById("table1"); //获取表节点

        var td_text = document.createElement("td");
        var text_1 = document.createTextNode("一个文本");
        td_text.appendChild(text_1); //把节点放到这一列

        var td_butt = document.createElement("td");
        td_butt.innerHTML='<button type="button" class="button1">我是按钮</button>';

        var td_input = document.createElement("td");
        td_input.innerHTML='<input type="text"/>';

        var tr = document.createElement("tr"); //建一行
        tr.appendChild(td_text);  //把这几列加进去
        tr.appendChild(td_butt);
        tr.appendChild(td_input);

        table.appendChild(tr);  //把这行加到表里

    }
    document.getElementById("btn_del_row").onclick = function () {
        var table =document.getElementById("table1");
        var ind = table.rows.length-1; //删最后一行
        table.rows[ind].remove();
    }
</script>
</body>
</html>

效果如下:

 

如果想要删除按钮放在表里,点击后删除当前元素的行。

//删除按钮放在某行某列
<td><input type="button" value="删除" onclick="delecttr(this)"></td>

//点击后触发,并传入自己的节点,把自己删除
function delecttr(obj){
var tr = obj.parentNode.parentNode;
tr.parentNode.removeChild(tr);
}

 参考资料:

     表格加一行

     表单加一行

     自增填表 表 添加、删除

     删除div boostriap

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 jqGrid 自带的 formatter 属性来实现操作列。首先,在 colModel 中定义操作列的属性,如下: ``` { name: 'operation', index: 'operation', width: 80, sortable: false, formatter: function(_, options, row) { var editBtn = '<button type="button" class="btn btn-xs btn-default editBtn" data-rowid="' + options.rowId + '">编辑</button>'; var delBtn = '<button type="button" class="btn btn-xs btn-danger delBtn" data-rowid="' + options.rowId + '">删除</button>'; return editBtn + ' ' + delBtn; } } ``` 其中,formatter 函数会接收三个参数: 1. `_`: 无意义 2. `options`: 当前单元格的一些属性,包括 rowId(行 ID)、colModel(列模型)、pos(当前单元格的左上角坐标)等等 3. `row`: 当前行的数据对象 在 formatter 中,我们可以根据 options 和 row 的值来自定义单元格的显示内容,返回一个 HTML 字符串即可。 然后,在 gridComplete 事件中为操作列的按钮绑定事件,如下: ``` gridComplete: function() { var $grid = $(this); // 编辑按钮点击事件 $grid.find('.editBtn').on('click', function() { var rowId = $(this).data('rowid'); var rowData = $grid.jqGrid('getRowData', rowId); // TODO:显示编辑对话框,并根据 rowData 的值填充表单 }); // 删除按钮点击事件 $grid.find('.delBtn').on('click', function() { var rowId = $(this).data('rowid'); $grid.jqGrid('delRowData', rowId); }); } ``` 在 gridComplete 中,我们可以利用 jqGrid 对象获取当前表格的 DOM 元素,并对其中的操作按钮绑定点击事件。需要注意的是,因为 jqGrid 会对表格的 DOM 结构进行修改,所以绑定事件时需要使用 $(this) 而非常规的选择器。 以上代码就可以实现在 jqGrid 中添加删除按钮了。如果需要修改按钮样式,可以在 formatter 函数中调整 HTML 字符串;如果需要添加更多的操作按钮,可在 formatter 和 gridComplete 中添加对应的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值