本文實(shí)例講述了js捐贈管理完整實(shí)現(xiàn)方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
index.html頁面如下:
        listData.updateRec = function(obj) {  
            for (var i = 0; i < listData.length; i++) {  
                if (listData[i].id = obj.id) {  
                    listData[i] = obj;  
                    break;  
                }  
            }  
        };  
  
        //定義一個全局的變量 ,檢測是否取消個性  
        var isCancelUpdate = false;  
        //定義三個文本input控件  
        var InputPerName = document.createElement("input");  
        InputPerName.type = "text";  
  
        var InputMoney = document.createElement("input");  
        InputPerName.type = "text";  
  
        var InputDate = document.createElement("input");  
        InputPerName.type = "text";  
  
        var SeleteOrg = document.createElement("select");  
  
        listData.delRecById = function (id) {  
            for (var i = 0; i < listData.length; i++) {  
                if (listData[i].id == id) {  
                    //刪除  
                    /*  
                    1.將從這個ID所在的位置開始,將后面的每一個元素都往前面移動一位  
                    2.最后一個元素重復(fù)了,要將其清除  
                    */  
                    for (var j = i; j < listData.length - 1; j++) {  
                        listData[j] = listData[j + 1];  
                    }  
                }  
            }  
            listData.length = listData.length - 1;  
        };  
  
        //把文本換成input文本框  
        function txtToInput(tdName, inputName) {  
            tdName.setAttribute("oldValue", tdName.innerHTML);//先保存原來的內(nèi)容,如果取消,就恢復(fù)  
            inputName.value = tdName.innerHTML;  
            tdName.appendChild(inputName);  
            tdName.removeChild(tdName.firstChild);  
        }  
  
        function txtToSelect(tdName, selObj) {  
            tdName.appendChild(selObj);  
            tdName.removeChild(tdName.firstChild);  
            selObj.value = tdName.getAttribute("orgId");  
        }  
  
        function selectorText(tdName) {  
            var orid = SeleteOrg.value;  
            var orgName = listOrgs.getOrgsById(orid).comName;  
           // tdName.setAttribute("orgId", SeleteOrg.value);  
            tdName.innerHTML = orgName;  
        }  
  
        //把input變回文本  
        function InputToTxt(tdName, inputName) {  
            //如果點(diǎn)擊的是取消  
            if (isCancelUpdate) {  
                tdName.innerHTML = tdName.getAttribute("oldValue");  
                return;  
            }  
            //點(diǎn)擊確定修改  
            tdName.innerHTML = inputName.value;  
        }  
          
        //把select控件變回文本  
        function seleToTxt(tdName, selName) {  
           // tdName.appendChild(selName);  
            var orgId = SeleteOrg.value;  
            //刪除之前的  
            tdName.innerHTML = (listOrgs.getOrgsById(orgId)).comName;  
        }  
  
        //取消修改  
        function CancelUp(obj) {  
            isCancelUpdate = true;//點(diǎn)擊的是取消  
            doCancel(obj);  
            isCancelUpdate = false;  
        }  
  
        function  doCancel(obj) {  
            var trCur = obj.parentElement.parentElement;  
            var tds = trCur.childNodes;  
            //全部使用原始的td下面的值(保存在Attribute中)  
            tds[1].innerHTML = tds[1].getAttribute("oldValue");  
            tds[2].innerHTML = listOrgs.getOrgsById(tds[2].getAttribute("orgId")).comName;  
            tds[3].innerHTML = tds[3].getAttribute("oldValue");  
            tds[4].innerHTML = tds[4].getAttribute("oldValue");  
            tds[5].innerHTML = "<a href='#' onclick='DelObj(this)' >刪除</a> <a href='#' onclick='UpObj(this)'>修改</a>";  
           // isCancelUpdate = false;  
            //確定取消成功后就要置trCur為null  
            trCur = null;  
        }  
        var trCur = null;  
  
        function UpObj(obj) {  
            if (trCur != null) {  
                //說明有行處于編輯狀態(tài),要取消其修改  
                isCancelUpdate = true;  
                //取消那一行的編輯  
                doCancel(trCur.childNodes[5].firstChild);//trCur.childNodes[5].firstChild,就是上一行的<a 修改>  
            }  
  
            //得到當(dāng)前所在的行  
            trCur = obj.parentElement.parentElement;  
            var tds = trCur.childNodes;  
            //捐贈人input修改  
            txtToInput(tds[1], InputPerName);  
            //金額  
            txtToInput(tds[3], InputMoney);  
            //受捐日期  
            txtToInput(tds[4], InputDate);  
            //下拉選擇單位  
            txtToSelect(tds[2], SeleteOrg);  
  
            //修改鏈接變成取消  
            tds[5].innerHTML = "<a href='#' onclick='doUpObj(this)' >確定</a> <a href='#' onclick='CancelUp(this)'>取消</a>";  
        }  
          
        //確定修改  
        function doUpObj(obj) {  
            isCancelUpdate = false;  
             trCur = obj.parentElement.parentElement;  
            //1.修改數(shù)組中對應(yīng)的記錄  
            var rec = { "id": trCur.childNodes[0].innerHTML, "perName": trCur.childNodes[1].childNodes[0].value, "orgId": trCur.childNodes[2].childNodes[0].value, "money": trCur.childNodes[3].childNodes[0].value, "date": trCur.childNodes[4].childNodes[0].value };  
            //調(diào)用方法來修改ListData中相應(yīng)的記錄  
            listData.updateRec(rec);  
            //2.修改表格中的記錄  
  
            InputToTxt(trCur.childNodes[1], InputPerName);  
            seleToTxt(trCur.childNodes[2], SeleteOrg);  
            InputToTxt(trCur.childNodes[3], InputMoney);  
            InputToTxt(trCur.childNodes[4], InputDate);  
            trCur.childNodes[5].innerHTML = "<a href='#' onclick='DelObj(this)' >刪除</a> <a href='#' onclick='UpObj(this)'>修改</a>"; 
            //trCur.childNodes[2].setAttribute("orgId", SeleteOrg.value); 
            //確定修改成功后就要置trCur為null  
            trCur = null;  
        } 
//刪除一行數(shù)據(jù)
        function DelObj(obj) {  
            //刪除數(shù)組中對應(yīng)的數(shù)組  
            //1.要得到選中的行  
            var curTr = obj.parentElement.parentElement;  
            //2.從第一個列中取到id的值  
            var delId = curTr.cells[0].innerHTML;  
            // window.alert(delId);  
            //3.根據(jù)id刪除一條記錄(數(shù)組中l(wèi)istData)  
            listData.delRecById(delId);  
            //4.刪除表格視圖中的顯示行  
            curTr.parentElement.removeChild(curTr);  
        } 
        function gel(id) {  
            return document.getElementById(id);  
        }  
  
        //1.查詢單位名稱的綁定,selEle是:selet元素節(jié)點(diǎn)  
        function LoadOrgList(selEle) {  
            for (var i = 0; i < listOrgs.length; i++) {  
                var opt = new Option(listOrgs[i].comName, listOrgs[i].id);  
                selEle.options.add(opt);  
            }  
        }  
        //2.綁定表格和綁定表格和listData的方法 
        function LoadDataList() {  
            //for (var i = 0; i < listData.length; i++) {  
            //    addRow(listData[i]);  
            //}  
            //分頁顯示  
            showPage();  
        } 
        function addRow(obj) {  
            var trnew = gel("tbList").insertRow(-1);  
            var tdnew = trnew.insertCell(-1);  
            tdnew.innerHTML = obj.id;  
            trnew.insertCell(-1).innerHTML = obj.perName; 
            var trOrgName = trnew.insertCell(-1);  
            trOrgName.setAttribute("orgId", obj.orgId);  
            trOrgName.innerHTML = (listOrgs.getOrgsById(obj.orgId)).comName;  
            trnew.insertCell(-1).innerHTML = obj.money;  
            trnew.insertCell(-1).innerHTML = obj.date;  
            trnew.insertCell(-1).innerHTML = "<a href='#' onclick='DelObj(this)' >刪除</a> <a href='#' onclick='UpObj(this)'>修改</a>";  
        } 
        window.onload = function() {  
            //綁定查詢  
            LoadOrgList(gel("selSearchOrg"));  
            //綁定受捐贈單位  
            LoadOrgList(gel("selAddOrg"));  
            LoadOrgList(SeleteOrg);  
            //綁定表格和listData  
            LoadDataList(); 
            //給新增按鈕綁定一個事件  
            gel("btnAdd").onclick = function() {  
                if ((!(gel("txtName").value)) || (!(gel("txtMoney").value) || (!(gel("txtDate").value)))) {  
                    alert("輸入不能為空");  
                    return;  
                }  
  
                //1.得到輸入的內(nèi)容,打包成一個對象(按照listData的格式)  
                var arr = { "perName": gel("txtName").value, "orgId": gel("selAddOrg").value, "money": gel("txtMoney").value, "date": gel("txtDate").value };  
                //2.添加到listData數(shù)組中  
                var res = listData.addRec(arr);  
                //3.顯示在表格中  
                var trnew = gel("tbList").insertRow(-1);  
                trnew.insertCell(-1).innerHTML = res.id;  
                trnew.insertCell(-1).innerHTML = res.perName;  
  
                var tdOrg = trnew.insertCell(-1);  
                tdOrg.setAttribute("orgId", res.orgId);  
                tdOrg.innerHTML = listOrgs.getOrgsById(res.orgId).comName;  
                trnew.insertCell(-1).innerHTML = res.money;  
                trnew.insertCell(-1).innerHTML = res.date;  
                trnew.insertCell(-1).innerHTML = "<a href='#' onclick='DelObj(this)' >刪除</a> <a href='#' onclick='UpObj(this)'>修改</a>";  
            };  
  
            //給查詢按鈕綁定事件  
            gel("btnSearch").onclick = function () {  
                if (gel("selSearchOrg").value == -1) {  
                    return;  
                }  
  
                //1.獲取要查詢的受捐贈單位的orgid  
                var orgId = gel("selSearchOrg").value;  
                //2.在ListData數(shù)組中定義一個根據(jù)orgid查詢的方法,并在這里調(diào)用  
                var arrRes = listData.queryByOrId(orgId);  
                //3.將舊的表格數(shù)據(jù)移除顯示,一定要從下到上清空顯示  
                var trs = gel("tbList").rows;  
  
                for (var j = trs.length-1; j>0; j--) {  
                    gel("tbList").deleteRow(j);  
                }  
                //4.顯示新的數(shù)據(jù)arrRes  
                for (var i = 0; i < arrRes.length; i++) {  
                    addRow(arrRes[i]);  
                }  
            }; 
            //給上一頁綁定事件  
            gel("btnprePage").onclick = function() {  
               if (pageNow > 1) {  
                   pageNow--;  
                   showPage();  
               } else {  
                   alert("已經(jīng)是第一頁!")  
               }  
            };  
            //給下一頁綁定事件  
            gel("btnnextPage").onclick = function () {  
                if(pageNow<listData.length/pageSize)  
                {  
                    pageNow++;  
                    showPage();  
                }else  
                {  
                    alert("已經(jīng)是最后一頁!");  
                }  
            };  
        };  
        var pageNow = 1;  
        var pageSize = 5;  
        function showPage() {  
            var trs = gel("tbList").rows;  
  
            for (var j = trs.length - 1; j > 0; j--) {  
                gel("tbList").deleteRow(j);  
            }  
  
            //1.根據(jù)pageNow和pageSize返回一個數(shù)組  
            var res = listData.fenyeQuery(pageNow, pageSize);  
            for (var i = 0; i < res.length; i++) {  
                addRow(res[i]);  
            }  
        }  
    </script>  
</head>  
<body>  
    <div id="container">  
        <h1>捐贈管理</h1>  
        <div class="search">  
            受捐單位  
            <select id="selSearchOrg">  
                <option value="-1">--請選擇--</option>  
            </select>  
            <input type="button" id="btnSearch" value="查詢" class="btn" /> <input type="button" value="上一頁" class="btn" id="btnprePage" /> <input type="button" value="下一頁" class="btn" id="btnnextPage" /><span id="pageBar"></span>  
        </div>  
        <div class="search">  
            捐贈人:<input type="text" id="txtName" class="inputShort" size="8" />  
            受捐單位:  
            <select id="selAddOrg">  
            </select>  
            金額:<input type="text" id="txtMoney" class="inputShort" size="8" />  
            受捐日期:<input type="text" id="txtDate" class="inputShort" size="10" />  
            <input type="button" id="btnAdd" value="新增" class="btn" />
        </div>  
        <table id="tbList" class="tbList" cellspacing="0" cellpadding="0">  
            <tr class="th">  
                <td>序號</td>  
                <td>捐贈人</td>  
                <td>受捐單位</td>  
                <td>金額</td>  
                <td>受捐日期</td>  
                <td>操作</td>  
            </tr>  
        </table>  
    </div>  
</body>  
</html>
css.css如下:
希望本文所述對大家的javascript程序設(shè)計有所幫助。
新聞熱點(diǎn)
疑難解答