市委组织部考核项目——动态添加,删除行

       这个项目我们采用快速开发的方式,首先欢哥给我们每人分配了一个技术难点,让大家去研究,我负责的是动态添加/删除一行。这个技术点完成之后只能说是勉强能用吧,ie8以下的都支持不了,不过从我自己看来确实是挺有成就感,毕竟第一个任务嘛,下面跟大家分享一下


       先来对整个页面做个简单的介绍,可以在0基础完全新建指标,也可以在之前的基础上进行修改,这次主要给大家说新建指标的功能,大家看到后边的+,-按钮了没?我的任务就是点击+按钮时在当前的位置后边添加一行,也就是说我点了第二行的+号那我就要在2,3行之间添加一行;其中的点击选择责任单位按钮后是个多选下拉框,当时实现克隆的时候废了我不少劲,试了很多种方法最后解决了,只是基本功能还不够完善,呵呵。还有点击-按钮时删除当前的行。




基础代码

<form id="form2" runat="server">    
        <div id="Add">
            <input id="ButAddnew" type="button" value="新建指标" />
                 
        <input id="ButAddOld" type="button" value="基于往年进行修改" />
            注意:点击选择某一年份,在此基础上进行修改     
        </div>

        <div id="Inquire">
            <span id="year">年份:</span>
            <select class="easyui-combobox" name="state" style="width: 200px;">
                <option value=""></option>
                <option value=""></option>
            </select>      
        指标类型:
        <select class="easyui-combobox" name="state" style="width: 200px;">
            <option value=""></option>
            <option value=""></option>
        </select>
         
        </div>
        
        <div class="myPanle">
            <div id="p" class="easyui-panel" style="height: 380px; width: 1200px;">
                <div id="DIV0" class="index">   
                    <div style="float:left;">     指标名称:
                        <input id="txtName" type="text" style="width: 225px"/>    单位: 
                        <%--<select name="com" style="width: 60px;display:block;">--%>
                           <select class="combobox" name="state" style="width: 60px;">   
                                    <option value="BFH" selected="selected">%</option>
                                    <option value="Y">亿</option>
                                    <option value="BJ">编辑</option>
                            </select>
                    </div>
                    <div id="bb0" style="float:left;" οnmοuseοut="hide1(this.id);">
                           责任单位:                                                          
                        <input id = "aaa0"type="button" class="selectUnit" value="点击选择责任单位"style="width:158px" οnmοuseοver="show1(this.id);" />         
                        <div id="ccd0" class= "vidcheck"style="width:156px;height:150px;"οnmοuseοver="show1(this.id);">
                                <input type="checkbox" name="check" value="01"/><span>责任单位1</span><br/>
                                <input type="checkbox" name="check" value="02"/><span>责任单位2</span><br/>
                                <input type="checkbox" name="check" value="03"/><span>责任单位3</span><br/>
                                <input type="checkbox" name="check" value="04"/><span>责任单位4</span><br/>
                                <input type="checkbox" name="check" value="05"/><span>责任单位5</span>
                         </div>
                     </div>
                     <div style="float:left;">
                            权重:
                      <input id="ButEweight" type="text" value="编辑" style="width: 50px" οnclick="ifNull(this);"/>
                                               计算公式:
                      <input id="ButErul" type="text" value="编辑" style="width: 200px" οnclick="ifNull(this);"/>              
                      <input id="0" name="Add" type="button" value="+" style="width: 40px" οnclick="addRow(this.id);" />
                      <input id="input0" name="Del" type="button" value="-" style="width: 40px;" οnclick="delRow(this.id);" />
                      </div>
                    
                </div>
            </div>
        </div>


        <div class="bottom">
            <span class="button">
                <input id="ButSave" type="button" value="保存" />
                <input id="ButCancle" type="button" value="取消" />
            </span>
        </div>
   
    </form>


js部分

<head id="Head1" runat="server">
    <title></title>
    <link href="CSS/demo.css" rel="stylesheet" type="text/css" />
    <link href="CSS/easyui.css" rel="stylesheet" type="text/css" />
    <link href="CSS/icon.css" rel="stylesheet" type="text/css" />
    <link href="CSS/myCss.css" rel="stylesheet" type="text/css" />
    <script src="JS/Jquery1.8.3%20.js"type="text/javascript"></script>
    <script src="JS/jquery.easyui.min.js" type="text/javascript"></script>
  
    <script language="javascript" type="text/javascript">
        //定义按钮+的的初始id值
        var i = 1;
        //添加一个DIV
        
        function addRow(id) {
            var pnode = document.getElementById(id).parentNode; //当前节点的父节点
            var divnode = pnode.parentNode; //当前div节点 如:id=DIV0的节点
            var allnode = divnode.parentNode; //当前id=p节点
            //获取最后一个divx的子节点div节点
//            var lastP = allnode.lastChild.previousSibling.childNodes.item(1);
//            //获取最后一个div的p节点的+按钮节点
//            var addIdlast = lastP.childNodes.item(14).id;
            //通过索引获得最后一个p节点的按钮+的id值,并使其+1,作为克隆的+按钮的id值(最后没有这种方法)
            // var addIdnew = parseInt(addIdlast) + 1;
            //通过获取+按钮的个数来取得将要克隆的+的按钮的id值
            var addIdnew = parseInt($("input[value = '+']").length);
            //获得按钮+的id值
            var addId = id;
            //通过拼接字符串的方式获得将要被克隆的div的id值
            var DivId = "DIV" + addId;
            //通过拼接字符串的方式获得将要被克隆的div中的-按钮的id值
            var delIdNew = "input" + addIdnew;
            //为了使将要克隆的div的id后边的值加1
            //var addIdnew = parseInt(addId) + 1;
            //同过拼接字符串的方式获得将要克隆的div的id值
            var DivIdNew = "DIV" + addIdnew;
            var aaaIdNew = "aaa" + addIdnew;
            var ccdIdNew = "ccd" + addIdnew;
            var bbIdNew = "bb" + addIdnew;
            // 获得被克隆的节点对象
            var sourceNode = document.getElementById(DivId);
 
            // 克隆节点
            var clonedNode = sourceNode.cloneNode(true);
            //更新克隆div节点的id
            clonedNode.setAttribute("id", DivIdNew);
            //判断被克隆的divx是否是最后一个divx,如果是的话就直接在后边插入克隆的divx;否则就要在被克隆的divx节点的后边的兄弟节点的前边插入
            if (allnode.lastChild == divnode) {
                // 在父节点插入克隆的节点
                sourceNode.parentNode.appendChild(clonedNode);
            } else {
                allnode.insertBefore(clonedNode, divnode.nextSibling);
            }    

            //获取克隆好的整个div节点
            var divNodenew = document.getElementById(DivIdNew);
            //通过索引获得divNode节点的下一级节点,为了获取ccd
            var pNodenew = divNodenew.childNodes.item(3);
            //通过索引获得divNode节点的下一级节点,为了获取+,-
            var ppNodenew = divNodenew.childNodes.item(5);
            //通过索引获得divNode节点的下一级节点,为了获取txtName节点;
            var pppNodenew = divNodenew.childNodes.item(1);          
            $(divNodenew.childNodes.item(3)).attr('id', bbIdNew);//修改bb节点的id
            $(ppNodenew.childNodes.item(5)).attr('id', addIdnew); //修改+节点的id
            $(ppNodenew.childNodes.item(7)).attr('id', delIdNew); //修改-节点的id
            $(pNodenew.childNodes.item(1)).attr('id', aaaIdNew); //修改aaa节点的id
            $(pNodenew.childNodes.item(3)).attr('id', ccdIdNew); //修改ccd节点的id

         
            // 清空checkbox的checked
            var bothernode = document.getElementById(aaaIdNew).nextSibling.nextSibling;
            //让下拉框显示
            document.getElementById(ccdIdNew).visible = true;
            var childarray = bothernode.getElementsByTagName("input");
            for (var i = 0; i < childarray.length; i++) {
                childarray[i].checked = false;
            }
            document.getElementById(ccdIdNew).visible = false;

            //将被克隆的div中的id=txtName,id=ccd,id=ButEweight,id=ButErul的
            $(pppNodenew.childNodes.item(1)).val("");
            $(pppNodenew.childNodes.item(3)).val("BFH");
            $(ppNodenew.childNodes.item(1)).val("编辑");
            $(ppNodenew.childNodes.item(3)).val("编辑");

        }
        //删除一行div
        function delRow(id) {
            //获取当前-按钮
            var delNode = document.getElementById(id);
            //获取当前节点的父节点的父节点即为divx节点
            var delDiv = delNode.parentNode.parentNode;
            //判断当前div节点是不是id=p的节点的第一个孩子节点,如果是的话-按钮起到的作用是将刚刚编辑的所有内容清空
            if (delDiv.previousSibling == delDiv.parentNode.firstChild) {
                var changetxtNameNode = delDiv.childNodes.item(1);
                
                //通过索引获得delDiv节点的下一级节点,为了获取input节点
                var xNode = delDiv.childNodes.item(3).childNodes.item(3);
                //让下拉框显示
                xNode.visible = true;
                var childarray = xNode.getElementsByTagName("input");
                //清除checkbox的checked属性
                for (var i = 0; i < childarray.length; i++) {
                    childarray[i].checked = false;
                }
                xNode.visible = false;
                var ppNodenew = delDiv.childNodes.item(5);
                $(changetxtNameNode.childNodes.item(1)).val("");
                $(changetxtNameNode.childNodes.item(3)).val("BFH");
                $(ppNodenew.childNodes.item(1)).val("编辑");
                $(ppNodenew.childNodes.item(3)).val("编辑");

            } else {
                $(delDiv).remove();
            }
  
        }
    

    </script>


    <script type="text/javascript">
        //实现选择责任单位的功能
        //多选下拉列表框,鼠标划过显示多选框,鼠标离开隐藏多选框
        function show1(fid) {
            var cid = "#" + fid;
            $(cid).parent().find('div').removeClass("vidcheck").addClass("vidcheck1");     
           
        }
        function hide1(fid) {
            var cid = "#" + fid;
            $(cid).find('div').removeClass("vidcheck1").addClass("vidcheck");      
                     
        }

        //点击编辑的时候如果内容为编辑的话那就把value值清空,如果不是的话证明人家已经编写了就不清空了
        function ifNull(txtNameNode) {
            if (txtNameNode.value =="编辑") {
                txtNameNode.value = "";
            }
        }
    </script>
</head>


其中引用的myCss.css文件

body {
}
.myPanle
{
    width:auto;
    margin-left:auto;
    margin-right:auto;
    text-align :center;
    
    }
 .panel
 {
     margin:auto;
     }

.button 
{
    width:70px;
    text-align:center;
    margin-left :465px;
    
    }
    

#ButSave,#ButCancle
{
    font-size:20px;
    
   /* margin-bottom :20px;*/
    }
    
 .bottom
 {
     margin-bottom :10px;
     margin-top :10px;
     }  
#ButAddnew,#year
{
    margin-left:150px;
    }
    
#Add,#Inquire,#p
{
    margin-top :20px;
    }
    
 .vidcheck
 {
     display:none;
     margin-left:65px; 
     z-index:100;
     overflow:visible;
     position:fixed;
     background-color:Gray;
     border:solid 1px;
     margin-top:0px;
     }
     .vidcheck1
 {
     margin-top:0px;
     margin-left:65px; 
     z-index:100;
     overflow:visible;
     position:fixed;
     background-color:Gray;
     border:solid 1px;
     display:block;
     }
     
  .index
  {
      margin-top:10px;
      margin-bottom:10px;
      }   
  

       剩下的引用的文件都是easyUi的了,大家可以在官网上找到我就不一一展示了。

      怎么样,不错吧?哈哈,还有很多不足,只能算是自慰+鼓励吧!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值