JavaScript實現(xiàn)增刪改查功能
來源:易賢網(wǎng) 閱讀:2394 次 日期:2015-04-17 10:33:19
溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript實現(xiàn)增刪改查功能”,方便廣大網(wǎng)友查閱!

JavaScript實現(xiàn)增刪改查功能,具體代碼如下:

//1.創(chuàng)建受捐單位數(shù)組

var arrOrgData = [

{ "Id": 1, "OrgName": "紅十字會" },

{ "Id": 2, "OrgName": "壹基金" },

{ "Id": 3, "OrgName": "中華慈善總會" },

{ "Id": 4, "OrgName": "中國扶貧基金會" }

];

//1-1.根據(jù)受捐單位id,返回受捐單位元素,動態(tài)綁定(定義)方法

arrOrgData.getOrgById = function (id) {

for (var i = 0; i < this.length; i++) {

if (this[i].Id == id) {

return this[i];

};

};

};

//2.詳細捐贈信息數(shù)組

var arrDetailData = [

{ "Id": 1, "Name": "成龍", "OrgId": 1, "Money": "1000", "Time": "2013 - 07 - 08" },

{ "Id": 2, "Name": "肥龍", "OrgId": 2, "Money": "2000", "Time": "2013 - 07 - 08" },

{ "Id": 3, "Name": "瘦龍", "OrgId": 3, "Money": "3000", "Time": "2013 - 07 - 08" },

{ "Id": 4, "Name": "傻龍", "OrgId": 4, "Money": "4000", "Time": "2013 - 07 - 08" }

];

//2.1.根據(jù)id刪除數(shù)組元素

arrDetailData.deleteById = function (id) {

for (var i = 0; i < this.length; i++) {

if (this[i].Id == id) {

//元素前移

for (var j = i; j < this.length - 1; j++) {

this[j] = this[j + 1];

};

//數(shù)組長度--

this.length--;

break;

};

};

};

//2-2.更新數(shù)據(jù),model-修改后的對象

arrDetailData.update = function (model) {

for (var i = 0; i < this.length; i++) {

if (this[i].Id == model.Id) {

this[i] = model;

break;

};

};

};

//2-3.新增數(shù)據(jù),并返回新增的元素

var modelId=arrDetailData.length;//定義變量,存儲數(shù)組元素的Id

arrDetailData.addModel = function (model) {

modelId++;//每次添加序號++

model.Id = modelId;//設(shè)置添加對象的Id

this[this.length] = model;//數(shù)組元素++,在length

return model;

};

//2-4.根據(jù)捐贈單位Id返回數(shù)組

arrDetailData.getSearchData = function (id) {

if(id==-1){//id為-1返回所有數(shù)據(jù)

return this;

};

//定義存儲查詢數(shù)據(jù)的數(shù)組

var arrSearch = new Array();

for (var i = 0; i < this.length; i++) {

if(this[i].OrgId==id){//判斷OrgId是否符合條件

arrSearch[arrSearch.length]=this[i];

};

};

return arrSearch;

};

//2-5.返回一頁數(shù)據(jù)

arrDetailData.pageIndex = 1;//頁碼

arrDetailData.pageCount = 5;//每頁記錄條數(shù)

arrDetailData.pages=0;//總頁數(shù)

//返回第pageIndex頁數(shù)據(jù)

arrDetailData.getPageData = function () {

var pageData = new Array();//定義數(shù)組存儲一頁數(shù)據(jù)

for (var i = (this.pageIndex - 1) * this.pageCount; i < this.pageIndex * this.pageCount; i++) {//獲取第pageIndex頁數(shù)據(jù)

//alert(this[i]);

if (this[i]) {//判斷this[i]是否undefined,過濾掉

pageData[pageData.length] = this[i];

};

}

return pageData;

};

//3.加載受捐單位信息,element-傳入select對象

function loadOrgData(element) {

for (var i = 0; i < arrOrgData.length; i++) {

var opt = new Option(arrOrgData[i].OrgName, arrDetailData[i].Id);

element.options.add(opt);

};

};

//4.加載表數(shù)據(jù)(詳細信息)

function loadDetailData() {

for (var i = 0; i < arrDetailData.length; i++) {

addTr(arrDetailData[i]);

}

};

//4-1.加載表數(shù)據(jù),arr數(shù)組數(shù)據(jù)

function loadDataToTb(arr) {

for (var i = 0; i < arr.length; i++) {

addTr(arr[i]);

};

};

//4-1.插入一行,model-數(shù)組元素

function addTr(model) {

var tb = getElement("tbList");//獲得表對象

var tr = tb.insertRow(-1);//插入一行

tr.insertCell(-1).innerHTML = model.Id;//插入序號列

tr.insertCell(-1).innerHTML = model.Name;//插入名稱列

var td = tr.insertCell(-1);//插入OrgId列

td.setAttribute("OrgId", model.OrgId);//保存OrgId到td的OrgId屬性(自定義)

td.innerHTML = arrOrgData.getOrgById(model.OrgId).OrgName;//設(shè)置捐贈單位名稱

tr.insertCell(-1).innerHTML = model.Money;//插入金額列

tr.insertCell(-1).innerHTML = model.Time;//插入捐贈時間列

tr.insertCell(-1).innerHTML = "<a href='#' onclick='setUpdateState(this)'>修改</a>&nbsp;&nbsp;<a href='#' onclick='deleteRow(this)'>刪除</a>";//操作列

};

//5.根據(jù)標(biāo)簽id獲得標(biāo)簽對象

function getElement(id) {

return document.getElementById(id);

};

//6.刪除行,element-當(dāng)前點擊de

function deleteRow(element) {

if (GlobalUpdateTr != null) {//判斷當(dāng)前是否修改狀態(tài)

rollBack(GlobalUpdateTr);

};

if (!confirm("確定刪除嗎?")) {//確認(rèn)是否要移除

return;

};

var delTr = element.parentNode.parentNode;//獲取刪除行

delTr.parentNode.removeChild(delTr);//移除行

arrDetailData.deleteById(delTr.childNodes[0].innerHTML);//刪除對應(yīng)的數(shù)組元素

};

//7.修改行

//7-1.定義全局變量,三個文本框一個下拉列表,一個存儲修改行的變量GlobalUpdateTr,標(biāo)記修改狀態(tài)

var inputPersonName = document.createElement("input");//捐贈人名稱

inputPersonName.type = "text";

var inputMoney = document.createElement("input");//捐贈金額

inputMoney.type = "text";

var inputTime = document.createElement("input");//捐贈時間

inputTime.type = "text";

var selectOrg = document.createElement("select");//受捐單位下拉列表

var GlobalUpdateTr = null;//存儲修改行,標(biāo)記是否修改狀態(tài)

//7.2.設(shè)置當(dāng)前行,為修改狀態(tài),obj-當(dāng)前點擊對象

function setUpdateState(element) {

if (GlobalUpdateTr != null) {//判斷是否已經(jīng)在修改狀態(tài)

rollBack(GlobalUpdateTr);//還原

};

GlobalUpdateTr = element.parentNode.parentNode;//獲得當(dāng)前修改行

txtToInput(GlobalUpdateTr.childNodes[1], inputPersonName);

txtToInput(GlobalUpdateTr.childNodes[3], inputMoney);

txtToInput(GlobalUpdateTr.childNodes[4], inputTime);

txtToSelect(GlobalUpdateTr.childNodes[2], selectOrg);

GlobalUpdateTr.childNodes[5].innerHTML = "<a href='#' onclick='update(this)'>確定</a>&nbsp;&nbsp;<a href='#' onclick='exitUpdateState(this)'>取消</a>";//設(shè)置操作列

};

//7-2-1.當(dāng)前行設(shè)置為修改狀態(tài)(文本設(shè)為文本框)(td:列,element:文本框)

function txtToInput(td,element) {

element.value = td.innerHTML;//設(shè)置obj的值

td.setAttribute("oldValue",td.innerHTML);//保存td的文本值,取消修改時要取的值

td.appendChild(element);//往列td添加obj

if (td.childNodes[1]) {//判斷是否有文本節(jié)點

td.removeChild(td.childNodes[0]);//移除td的文本節(jié)點

};

};

//7-2-2.當(dāng)前行設(shè)置為修改狀態(tài)(文本設(shè)為下拉列)(td:列,element:下拉列)

function txtToSelect(td, element) {

td.appendChild(element);

td.removeChild(td.childNodes[0]);

element.value = td.getAttribute("OrgId");

};

//7-3.取消修改,恢復(fù)界面,退出修改操作狀態(tài),element-當(dāng)前點擊對象

function exitUpdateState(element) {

var cancelTr = element.parentNode.parentNode;//取得當(dāng)前行

rollBack(cancelTr);

//退出修改狀態(tài)

GlobalUpdateTr = null;

};

//還原,obj-當(dāng)前修改行/之前的修改行

function rollBack(element) {

element.childNodes[1].innerHTML = element.childNodes[1].getAttribute("oldValue");//恢復(fù)原來的文本值(名稱)

element.childNodes[3].innerHTML = element.childNodes[3].getAttribute("oldValue");//恢復(fù)原來的文本值(金額)

element.childNodes[4].innerHTML = element.childNodes[4].getAttribute("oldValue");//恢復(fù)原來的文本值(日期)

element.childNodes[2].removeChild(selectOrg);//移除下拉列

var orgId = element.childNodes[2].getAttribute("OrgId");//取得捐贈單位id

element.childNodes[2].innerHTML = arrOrgData.getOrgById(orgId).OrgName;//恢復(fù)原來的文本值(捐贈單位)

element.childNodes[5].innerHTML = "<a href='#' onclick='setUpdateState(this)'>修改</a>&nbsp;&nbsp;<a href='#' onclick='deleteRow(this)'>刪除</a>";//恢復(fù)操作列

};

//7-4.確定修改,更新界面,更新數(shù)據(jù),修改完畢退出修改狀態(tài),element-當(dāng)前點擊對象

function update(element) {

var updateTr = element.parentNode.parentNode;//取得當(dāng)前行

//更新界面

updateTr.childNodes[1].innerHTML = inputPersonName.value;

updateTr.childNodes[3].innerHTML = inputMoney.value;

updateTr.childNodes[4].innerHTML = inputTime.value;

updateTr.childNodes[2].removeChild(selectOrg);

updateTr.childNodes[2].innerHTML = arrOrgData.getOrgById(selectOrg.value).OrgName;

updateTr.childNodes[2].setAttribute("OrgId", selectOrg.value);//更新OrgId

updateTr.childNodes[5].innerHTML = "<a href='#' onclick='setUpdateState(this)'>修改</a>&nbsp;&nbsp;<a href='#' onclick='deleteRow(this)'>刪除</a>";//恢復(fù)操作列

//更新數(shù)據(jù)

//下拉列表的value值就是下拉列表當(dāng)前選項的value值

var model = { "Id": updateTr.childNodes[0].innerHTML, "Name": inputPersonName.value, "OrgId": selectOrg.value, "Money": inputMoney.value, "Time": inputTime.value };//創(chuàng)建與當(dāng)前行數(shù)據(jù)對應(yīng)的對象

arrDetailData.update(model);//更新數(shù)組

//退出修改狀態(tài)

GlobalUpdateTr = null;

};

//-------窗口加載完畢觸發(fā)--------//

window.onload = function () {

//1.加載arrOrgData(to下拉列)

loadOrgData(getElement("selSearchOrg"));

loadOrgData(getElement("selAddOrg"));

loadOrgData(selectOrg);

//2.加載arrDetailData(to表)

loadDetailData();

//3.新增

getElement("btnAdd").onclick = function () {

var model = {"Name": getElement("txtName").value, "OrgId": getElement("selAddOrg").value, "Money": getElement("txtMoney").value, "Time": getElement("txtDate").value };//創(chuàng)建一個新數(shù)組元素對象

model = arrDetailData.addModel(model);//返回新增的元素

addTr(model);//插入新行到表顯示

};

//4.查詢(先刪除當(dāng)前界面所有行,再添加)

getElement("btnSearch").onclick = function () {

var tbList = getElement("tbList");//獲得表

for (var i = tbList.rows.length - 1; i >= 1; i--) {//遍歷刪除表的行,從末端開始

tbList.deleteRow(i);//刪除一行

}

var searchId = getElement("selSearchOrg").value;//要查詢的捐贈單位id

var arrSearchData = arrDetailData.getSearchData(searchId);//得到查詢數(shù)據(jù)

loadDataToTb(arrSearchData);//(加載)顯示查詢數(shù)據(jù)

};

//5.分頁(先刪除當(dāng)前界面所有行,再添加)

//5-1.下一頁

getElement("btnnextPage").onclick = function () {

if (arrDetailData.length == 0) {

alert("沒有數(shù)據(jù)");

};

//獲取總頁數(shù)

arrDetailData.pages = arrDetailData.length % arrDetailData.pageCount != 0 ? (arrDetailData.length - arrDetailData.length % arrDetailData.pageCount) / arrDetailData.pageCount + 1 : arrDetailData.length / arrDetailData.pageCount;

if (arrDetailData.pageIndex == arrDetailData.pages) {//判斷是否最后一頁

alert("最后一頁啦");

return;//返回

};

var tbList = getElement("tbList");//獲得表對象

for (var i= tbList.rows.length-1;i>=1; i--) {//刪除表所有行

tbList.deleteRow(i);

}

arrDetailData.pageIndex++;//頁碼++,取得下一頁

var arrPage = arrDetailData.getPageData();//獲得一頁數(shù)據(jù)

loadDataToTb(arrPage);//加載顯示到表

};

//5-2.上一頁

getElement("btnprePage").onclick = function () {

if (arrDetailData.length == 0) {

alert("沒有數(shù)據(jù)");

};

//獲取總頁數(shù)

arrDetailData.pages = arrDetailData.length % arrDetailData.pageCount != 0 ? (arrDetailData.length - arrDetailData.length % arrDetailData.pageCount) / arrDetailData.pageCount + 1 : arrDetailData.length / arrDetailData.pageCount;

if(arrDetailData.pageIndex==1){//判斷是否第一頁

alert("這個第一頁");

return;

};

var tbList = getElement("tbList");//獲得表對象

for (var i = tbList.rows.length - 1; i >= 1; i--) {//刪除表所有行

tbList.deleteRow(i);

}

arrDetailData.pageIndex--;//頁碼--,取得上一頁

var arrPage = arrDetailData.getPageData();//獲得一頁數(shù)據(jù)

loadDataToTb(arrPage);//加載顯示到表

};

};

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機網(wǎng)站地址:JavaScript實現(xiàn)增刪改查功能
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)