javasciptdom编程 table对象 练习(2)

排名练习:向表格添加数据,

1、当编号遇到重复给予提示并且无法添加,2、而且按排名顺序添加数据,3、可以动态删除和修改,并把修改数据保存起来

新手们动起手来自己练习练习吧。。。。加深对JS中对象的理解。

参考代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>ggggg</title>
<link rel="stylesheet" type="text/css" href="">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<!--js代码可以放置在任意位置,按照先后顺序依次执行 一般放在head标签之间-->
<script type="text/javascript">

    /*插入数据*/
    function insert(){        
        //获得表格对象
        var mytable=document.getElementById("table1");
        //判断插入是否重复的排名
        //遍历
        //定义变量要插入的位置
        var insertW=mytable.rows.length;
        for(var i=1;i<mytable.rows.length;i++){
            //取出每一行
            var eRows=mytable.rows[i];
            //判断输入的排名是否重复
            if(eRows.cells[0].innerText==no.value){
                window.alert("与排名 "+eRows.cells[0].innerText+" 重复");
                return ;//阻止代码往下面执行
            }
            
            //进行排序 查找要插入的位置
            if(parseInt(no.value)>parseInt(eRows.cells[0].innerText)){
                insertW=i;
                //window.alert(insertW);
            }
        }
        
        //排序后的插入
        var eachRow=mytable.insertRow(insertW+1);    
        //每行添加数据
        eachRow.insertCell(0).innerText=document.getElementById("no").value;
        eachRow.insertCell(1).innerText=username.value;
        eachRow.insertCell(2).innerText=nickname.value;
        eachRow.insertCell(3).innerHTML="<a href='#' onclick='deleteRow(this)'>删除</a>";
        eachRow.insertCell(4).innerHTML="<a href='#' onclick='updateRow(this)'>修改</a>";
    }

    /*更新数据*/
    function updateRow(obj){
        //window.alert("ok");
        var mytable=document.getElementById("table1");
        //找到要修改的行
        var index=obj.parentNode.parentNode.sectionRowIndex;
        mytable.rows[index].cells[1].innerHTML="<input type='text' id='username'/>";
        mytable.rows[index].cells[2].innerHTML="<input type='text' id='nickname'/>";
        mytable.rows[index].cells[3].innerText="删除";
        mytable.rows[index].cells[4].innerHTML="<a href='#' onclick='save(this)'>保存</a>";
    }
    
    /*更新后点击保存*/
    function save(obj){

        var mytable=document.getElementById("table1");
        //找到要修改的行
        var index=obj.parentNode.parentNode.sectionRowIndex;
        mytable.rows[index].cells[1].innerText=document.getElementById("username").value;
        mytable.rows[index].cells[2].innerText=document.getElementById("nickname").value;
        mytable.rows[index].cells[3].innerHTML="<a href='#' onclick='deleteRow(this)'>删除</a>";
        mytable.rows[index].cells[4].innerHTML="<a href='#' onclick='updateRow(this)'>修改</a>";
    }

    /*删除数据*/
    function deleteRow(obj){
        //window.alert("ok");
        var mytable=document.getElementById("table1");
        //找到当前列
        //找到该删除节点的父父节点<tr>并返回一个(TableRow 对象),从而取得该行对应的行号
        //window.alert(obj.parentNode.parentNode.sectionRowIndex);
        var index=obj.parentNode.parentNode.sectionRowIndex;
        var del=window.confirm("确定删除");
        if(del){
            mytable.deleteRow(index);
            window.alert("删除成功");
        }
    }

</script>
</head>
<body>
    <table id="table1" border="1">
        <tr><td>排名</td><td>姓名</td><td>外号</td><td>删除</td><td>修改</td></tr>
        <tr><td>1</td><td>宋江</td><td>及时雨</td><td><a href="#" onclick='deleteRow(this)'>删除</a></td><td><a href="#" onclick="updateRow(this)">修改</a></td></tr>
        <tr><td>2</td><td>卢俊义</td><td>玉麒麟</td><td><a href="#" onclick='deleteRow(this)'>删除</a></td><td><a href="#" onclick="updateRow(this)">修改</a></td></tr>
        <tr><td>10</td><td>test</td><td>test</td></td><td><a href="#" onclick='deleteRow(this)'>删除</a></td><td><a href="#" onclick='updateRow(this)'>修改</a></td></tr>
    </table>
    <br/><br/>
    排名:<input id="no" type="text" name="no"><br/>
    姓名:<input id="username" type="text" name="username"><br/>
    外号:<input id="nickname" type="text" name="nickname"><br/>
    <input type="button" value="添加" onclick="insert()"><br/>
</body>
</html>

原文地址:https://www.cnblogs.com/pwm5712/p/3036032.html