javaScript实现增删改查
自己写的一个html+javaScript实现增删改查小实例。下面是js代码
1. [代码][JavaScript]代码
//1.创建受捐单位数组
var arrOrgData = [
{ "Id": 1, "OrgName": "红十字会" },
{ "Id": 2, "OrgName": "壹基金" },
{ "Id": 3, "OrgName": "中华慈善总会" },
{ "Id": 4, "OrgName": "中国扶贫基金会" }
];
//1-1.根据受捐单位id,返回受捐单位元素,动态绑定(定义)方法
arrOrgData.getOrgById = function (id) {
for (var i = 0; i < this.length; i++) {
if (this[i].Id == id) {
return this[i];
};
};
};
//2.详细捐赠信息数组
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.根据id删除数组元素
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];
};
//数组长度--
this.length--;
break;
};
};
};
//2-2.更新数据,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.新增数据,并返回新增的元素
var modelId=arrDetailData.length;//定义变量,存储数组元素的Id
arrDetailData.addModel = function (model) {
modelId++;//每次添加序号++
model.Id = modelId;//设置添加对象的Id
this[this.length] = model;//数组元素++,在length
return model;
};
//2-4.根据捐赠单位Id返回数组
arrDetailData.getSearchData = function (id) {
if(id==-1){//id为-1返回所有数据
return this;
};
//定义存储查询数据的数组
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.返回一页数据
arrDetailData.pageIndex = 1;//页码
arrDetailData.pageCount = 5;//每页记录条数
arrDetailData.pages=0;//总页数
//返回第pageIndex页数据
arrDetailData.getPageData = function () {
var pageData = new Array();//定义数组存储一页数据
for (var i = (this.pageIndex - 1) * this.pageCount; i < this.pageIndex * this.pageCount; i++) {//获取第pageIndex页数据
//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.加载表数据(详细信息)
function loadDetailData() {
for (var i = 0; i < arrDetailData.length; i++) {
addTr(arrDetailData[i]);
}
};
//4-1.加载表数据,arr数组数据
function loadDataToTb(arr) {
for (var i = 0; i < arr.length; i++) {
addTr(arr[i]);
};
};
//4-1.插入一行,model-数组元素
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;//设置捐赠单位名称
tr.insertCell(-1).innerHTML = model.Money;//插入金额列
tr.insertCell(-1).innerHTML = model.Time;//插入捐赠时间列
tr.insertCell(-1).innerHTML = "<a href='#' onclick='setUpdateState(this)'>修改</a> <a href='#' onclick='deleteRow(this)'>删除</a>";//操作列
};
//5.根据标签id获得标签对象
function getElement(id) {
return document.getElementById(id);
};
//6.删除行,element-当前点击de
function deleteRow(element) {
if (GlobalUpdateTr != null) {//判断当前是否修改状态
rollBack(GlobalUpdateTr);
};
if (!confirm("确定删除吗?")) {//确认是否要移除
return;
};
var delTr = element.parentNode.parentNode;//获取删除行
delTr.parentNode.removeChild(delTr);//移除行
arrDetailData.deleteById(delTr.childNodes[0].innerHTML);//删除对应的数组元素
};
//7.修改行
//7-1.定义全局变量,三个文本框一个下拉列表,一个存储修改行的变量GlobalUpdateTr,标记修改状态
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;//存储修改行,标记是否修改状态
//7.2.设置当前行,为修改状态,obj-当前点击对象
function setUpdateState(element) {
if (GlobalUpdateTr != null) {//判断是否已经在修改状态
rollBack(GlobalUpdateTr);//还原
};
GlobalUpdateTr = element.parentNode.parentNode;//获得当前修改行
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> <a href='#' onclick='exitUpdateState(this)'>取消</a>";//设置操作列
};
//7-2-1.当前行设置为修改状态(文本设为文本框)(td:列,element:文本框)
function txtToInput(td,element) {
element.value = td.innerHTML;//设置obj的值
td.setAttribute("oldValue",td.innerHTML);//保存td的文本值,取消修改时要取的值
td.appendChild(element);//往列td添加obj
if (td.childNodes[1]) {//判断是否有文本节点
td.removeChild(td.childNodes[0]);//移除td的文本节点
};
};
//7-2-2.当前行设置为修改状态(文本设为下拉列)(td:列,element:下拉列)
function txtToSelect(td, element) {
td.appendChild(element);
td.removeChild(td.childNodes[0]);
element.value = td.getAttribute("OrgId");
};http://www.huiyi8.com/qqtouxiang/
//7-3.取消修改,恢复界面,退出修改操作状态,element-当前点击对象
function exitUpdateState(element) {
var cancelTr = element.parentNode.parentNode;//取得当前行
rollBack(cancelTr);
//退出修改状态
GlobalUpdateTr = null;
};QQ头像
//还原,obj-当前修改行/之前的修改行
function rollBack(element) {
element.childNodes[1].innerHTML = element.childNodes[1].getAttribute("oldValue");//恢复原来的文本值(名称)
element.childNodes[3].innerHTML = element.childNodes[3].getAttribute("oldValue");//恢复原来的文本值(金额)
element.childNodes[4].innerHTML = element.childNodes[4].getAttribute("oldValue");//恢复原来的文本值(日期)
element.childNodes[2].removeChild(selectOrg);//移除下拉列
var orgId = element.childNodes[2].getAttribute("OrgId");//取得捐赠单位id
element.childNodes[2].innerHTML = arrOrgData.getOrgById(orgId).OrgName;//恢复原来的文本值(捐赠单位)
element.childNodes[5].innerHTML = "<a href='#' onclick='setUpdateState(this)'>修改</a> <a href='#' onclick='deleteRow(this)'>删除</a>";//恢复操作列
};
//7-4.确定修改,更新界面,更新数据,修改完毕退出修改状态,element-当前点击对象
function update(element) {
var updateTr = element.parentNode.parentNode;//取得当前行
//更新界面
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> <a href='#' onclick='deleteRow(this)'>删除</a>";//恢复操作列
//更新数据
//下拉列表的value值就是下拉列表当前选项的value值
var model = { "Id": updateTr.childNodes[0].innerHTML, "Name": inputPersonName.value, "OrgId": selectOrg.value, "Money": inputMoney.value, "Time": inputTime.value };//创建与当前行数据对应的对象
arrDetailData.update(model);//更新数组
//退出修改状态
GlobalUpdateTr = null;
};
//-------窗口加载完毕触发--------//
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 };//创建一个新数组元素对象
model = arrDetailData.addModel(model);//返回新增的元素
addTr(model);//插入新行到表显示
};
//4.查询(先删除当前界面所有行,再添加)
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);//得到查询数据
loadDataToTb(arrSearchData);//(加载)显示查询数据
};
//5.分页(先删除当前界面所有行,再添加)
//5-1.下一页
getElement("btnnextPage").onclick = function () {
if (arrDetailData.length == 0) {
alert("没有数据");
};
//获取总页数
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();//获得一页数据
loadDataToTb(arrPage);//加载显示到表
};
//5-2.上一页
getElement("btnprePage").onclick = function () {
if (arrDetailData.length == 0) {
alert("没有数据");
};
//获取总页数
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();//获得一页数据
loadDataToTb(arrPage);//加载显示到表
};
};
2、图片

javaScript实现增删改查的更多相关文章
- Elasticsearch Javascript API增删改查
查询 根据索引.类型.id进行查询: client.get({ index:'myindex', type:'mytype', id:1 },function(error, response){// ...
- (网页)javaScript增删改查(转)
转自CSDN: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ...
- JavaScript HTML DOM增删改查
首先 js 可以修改HTML中的所有元素和属性,它还可以改变CSS样式,并且可以监听到所有事件并作出响应,这篇笔记呢 主要记录如何对HTML元素进行增删改查. 1 查找DOM 第一种方式是我们最常用的 ...
- javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行
jsp页面表格布局Html代码 <body onload="show()"> <center> <input type="text" ...
- javascript相关的增删改查以及this的理解
前两天做了一个有关表单增删改查的例子,现在贴出来.主要是想好好说一下this. 下面贴一张我要做的表格效果. 就是实现简单的一个增删改查. 1.点击增加后自动增加一行: 2.点击保存当前行会将属性改成 ...
- JavaScript之DOM的增删改查
JavaScript的组成: 1. ECMAScript-语法规范 2. Web APIs(浏览器提供的工具) (1).BOM (浏览器对象模型) (2).DOM (文档对象模型) 今天就来讲讲DOM ...
- 用 JS(JavaScript )实现增删改查
JS小例题 学习内容: 需求 总结: 学习内容: 需求 用 JavaScript 实现简单增删改查 实现代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HT ...
- JavaScript(JS)之Javascript对象DOM之增删改查(四)
创建节点:var ele_a = document.createElement('a');添加节点:ele_parent.appendChild(ele_img);删除节点:ele_parent.re ...
- javascript json对象操作(基本增删改查)
/** * Json对象操作,增删改查 * * @author lellansin * @blog www.lellansin.com * @version 0.1 * * 解决一些常见的问题 * g ...
随机推荐
- Android 之 下拉框(Spinner)的使用-转
下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. Demo如下,可以留作参考 一.使用数组作为数 ...
- (4)Swing布局
一.FlowLayout-流布局 新增第一个组件后默认在第一行的居中位置,之后 组件按照加入的先后顺序按照设置的对齐方式从左向右排列 二.borderLayout-边框布局 容器划分为东.西.南.北. ...
- 王垠:谈 Linux,Windows 和 Mac ( 2013)
这段时间受到很多人的来信.他们看了我很早以前写的推崇 Linux 的文章,想知道如何“抛弃 Windows,学习 Linux”.天知道他们在哪里找到那么老的文章,真是好事不出门…… 我觉得我有责任消除 ...
- T9270 mjt树
题目背景 从前森林里有一棵很大的mjt树,树上有很多小动物. 题目描述 mjt树上有 n 个房间,第 i 个房间住着 ai 只第bi 种小动物. 这n个房间用n-1条路连接起来,其中房间1位mjt树的 ...
- Eclipse编译无响应
Eclipse编译无响应 Eclipse进程无响应结束进程后,或电脑直接断电后,重新打开Eclipse偶尔重新编译会卡进度,下面有一种解决方案: 首先找到卡进度的工程的名字,关闭Eclipse,找到该 ...
- QML 开发神奇加成之为网络资源设置本地缓存
QML 开发神奇加成之为网络资源设置本地缓存 直接上码: #include <QNetworkAccessManager> #include <QNetworkDiskCache&g ...
- Linux多线程实例 定时重启httpd和mysqld
#include <stdio.h> #include <pthread.h> void *start_routine(void *arg) { while(1) { syst ...
- C++与Java语法上的不同
最近学习算法和刷题基本都是用C++写的程序,在这个过程中,发现C++和Java在语法上有很多相同点,但也有很多不同点,而这些不同点对于已经掌握Java的程序员来说,理解C++代码可能会有些吃力甚至困难 ...
- oracle下session的查询与删除
oracle下session的查询与删除 1.查询当前session SQL> select username,sid,serial# from v$session where username ...
- leetcode 刷题之路 68 Gas Station
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...