JavaScript学习记录总结(七)——dom对象应用之用户简单管理
<!DOCTYPE html>
<html>
<head>
<title>users.html</title>
<meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script type="text/javascript">
//全局变量
var pages = 0;//总页数
var pagesize = 3;//每页显示数量
var startsize = 0;//每页开始显示的位置
var endsize = 0;//每页结束显示的位置
var nowpage = 1;//当前页
var countsize = 0;//总记录数
//保存添加的数据的数组
var users = new Array();
function addUser() {
//获取dom对象
var nameDom = getById("name");
var ageDom = getById("age");
//根据dom的属性获取value值
var nameValue = nameDom.value;
var ageValue = ageDom.value;
//根据name="sex" name属性的值获取节点对象
var sexsDom = document.getElementsByName("sex");
var sexValue = "";
//遍历
for (var i = 0; i < sexsDom.length; i++) {
var sexDom = sexsDom[i];//获取dom对象<input type="radio" value="男" name="sex"/>男
if (sexDom.checked) {
sexValue = sexDom.value;
}
}
//保存到数组中
users.push(new User(nameValue, ageValue, sexValue));
//数组发生变化 就应该重新计算
pagination();
};
//重新计算分页的数据
function pagination() {
//总记录数
countsize = users.length;
//总页数
pages=countsize%pagesize==0?countsize/pagesize:(countsize-countsize%pagesize)/pagesize+1;
if (nowpage <= 0) {
nowpage = 1; // 第一页
} else if (nowpage >pages) { // 如果当前页大于总页数 ,那么当前页应该等于总页数
nowpage = pages;
}
//每页开始的记录数
startsize=(nowpage-1)*pagesize;
//每页结束的记录数
endsize = (nowpage - 1) * pagesize + pagesize;
//显示分页相关的数据
getById("pageinfo").innerHTML = "总记录数是:" + countsize + ",总页数是:" + pages
+ ",当前页是:" + nowpage + ",开始的记录数是:" + startsize + ",结束的记录数是:"
+ endsize;
//重新显示数据
showUsers();
}
function showUsers() {
//获取要添加的位置 的dom节点对象
var showUsersDom = getById("showUsers");
//思考 非常简单 showUsersDom清空
for(var i=0;i<showUsersDom.childNodes.length;){
showUsersDom.removeChild(showUsersDom.childNodes[i]); //3 0 2 0 1 0 0
}
for (var i = startsize; i < endsize; i++) {
var user = users[i];
//创建行
var trDom = document.createElement("tr");
//创建列
var td1Dom = document.createElement("td");
var td2Dom = document.createElement("td");
var td3Dom = document.createElement("td");
var td4Dom = document.createElement("td");
//创建列的文本节点
var text1Dom = document.createTextNode(user.nameValue);
var text2Dom = document.createTextNode(user.ageValue);
var text3Dom = document.createTextNode(user.sexValue);
var deleteInputDom = document.createElement("input");
deleteInputDom.setAttribute("type", "button");
deleteInputDom.setAttribute("value", "删除");
deleteInputDom.setAttribute("id",i);
deleteInputDom.onclick=deleteUser;
var updateInputDom = document.createElement("input");
updateInputDom.setAttribute("type", "button");
updateInputDom.setAttribute("value", "更新");
//列中添加文本
td1Dom.appendChild(text1Dom);
td2Dom.appendChild(text2Dom);
td3Dom.appendChild(text3Dom);
td4Dom.appendChild(deleteInputDom);
td4Dom.appendChild(updateInputDom);
//行中添加列
trDom.appendChild(td1Dom);
trDom.appendChild(td2Dom);
trDom.appendChild(td3Dom);
trDom.appendChild(td4Dom);
showUsersDom.appendChild(trDom);
}
}
var deleteUser=function(){
//数组怎么删除尼
users.splice(this.id, 1);//删除数据
pagination();
};
//创建User对象的构造函数
function User(nameValue, ageValue, sexValue) {
this.nameValue = nameValue;
this.ageValue = ageValue;
this.sexValue = sexValue;
}
//简化名称
function getById(id) {
return document.getElementById(id);
};
//当窗体加载完毕触发的函数
window.onload = function() {
//获取按钮对象 注册点击事件
getById("firstPageBtn").onclick = firstPage;
getById("prePageBtn").onclick = prePage;
getById("nextPageBtn").onclick = nextPage;
getById("lastPageBtn").onclick = lastPage;
};
//首页处理
var firstPage = function() {
nowpage = 1;
pagination();//重新计算
};
//上一页的处理
var prePage = function() {
nowpage = nowpage - 1;
if (nowpage <= 1) {
nowpage = 1;
}
pagination();//重新计算
};
//下一页的处理
var nextPage = function() {
nowpage = nowpage + 1;
if (nowpage >= pages) {
nowpage = pages;
}
pagination();
};
//末页的处理
var lastPage = function() {
nowpage = pages;
pagination();
};
</script>
</head>
<body>
<div style="text-align: center">
<table border="1" align="center">
<tr>
<td>用户名:</td>
<td><input type="text" id="name" /></td>
</tr>
<tr>
<td>年龄</td>
<td><input type="text" id="age" /></td>
</tr>
<tr>
<td>性别</td>
<td><input type="radio" value="男" name="sex" />男 <input
type="radio" value="女" name="sex" checked="checked" />女</td>
</tr>
<tr>
<td colspan="2"><input type="button" value="添加"
onclick="addUser()" /></td>
</tr>
</table>
</div>
<div>
<table border="1" align="center">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>操作</th>
</tr>
</thead>
<tbody id="showUsers"></tbody>
</table>
<div style="text-align: center">
<input type="button" id="firstPageBtn" value="首页" /> <input
type="button" id="prePageBtn" value="上一页" /> <input type="button"
id="nextPageBtn" value="下一页" /> <input type="button"
id="lastPageBtn" value="末页" /> <span id="pageinfo"></span>
</div>
</div>
</body>
</html>
效果:
JavaScript学习记录总结(七)——dom对象应用之用户简单管理的更多相关文章
- JavaScript学习记录一
title: JavaScript学习记录一 toc: true date: 2018-09-11 18:26:52 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- JavaScript学习记录四
title: JavaScript学习记录四 toc: true date: 2018-09-16 20:31:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- JavaScript学习记录三
title: JavaScript学习记录三 toc: true date: 2018-09-14 23:51:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- JavaScript学习记录二
title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
- Javascript 解析字符串生成 XML DOM 对象。
Javascript 接收字符串生成 XML DOM 对象.实测对 Firefox .IE6 有效.可用于解析 ajax 的服务器响应结果,也可用于解析自定义字符串.1. [代码]函数 ppt模 ...
- JavaScript学习笔记系列2:Dom操作(一)
一.什么是Dom? DOM------>Document Object Model 直接翻译就是文档对象模型. DOM------>定义了表示和修改文档所需的对象.这些对象的行为和属性以及 ...
- JavaScript学习(5)-Image对象和动态HTML
JavaScript学习5 1.image 对象 对象引用 document.images[n] document.images["imageName"] document.ima ...
- JavaScript学习(2):对象、集合以及错误处理
在这篇文章里,我们讨论一下JavaScript中的对象.数组以及错误处理. 1. 对象 对象是JavaScript中的一种基本类型,它内部包含一些属性,我们可以对这些属性进行增删操作. 1.1 属性 ...
随机推荐
- "琳琅满屋"调查问卷 心得体会及结果分析
·关于心得体会 当时小组提出这个校园二手交易市场的时候,就确定了对象范围,仅仅是面向在校大学生,而且在我们之前就已经有了很多成功的商品交易的例子可以让我们去借鉴,再加上我们或多或少的有过网 ...
- git初识
下载网上的开发员的项目 git clone https://github.com/xxxxxx/test.git 下载好,进入刚下载的好的test项目目录,可以修改对应的代码,然后 git statu ...
- 响应式架构:消息模式Actor实现与Scala、Akka应用集成
这是一本最近很流行的书. 有时间就去看看
- Android 系统基础
当系统启动一个组件,它其实就启动了这个程序的进程(如果这个进程还未被启动的话)并实例化这个组件所需要的类. 例如,如果你的程序启动了相机程序里的activity去拍照,这个activity实际上是运行 ...
- Android Studio 配置JPush
1.在JPush官方下载 JPush SDK(jpush-android-arm-2.1.0.zip),我下载的是2.1.0: 2.解压下载好的压缩包(jpush-android-arm-2.1.0. ...
- RPI学习--webcam_用fswebcam抓取图片
若 ls /dev 下没有video0,可以参考http://www.cnblogs.com/skynext/p/3644873.html,更新firmware 1,安装fswebcam: sudo ...
- JS获取客户端Mac和IP
JS获取硬件信息是通过ActiveX进行获取的,因此只能IE浏览器支持,火狐不支持 而且必须降低浏览器安全级别,因此不到万不得以一般不会采用这种方式 <html> <head> ...
- C# 使用命令行编译单个CS文件
编译单个CS文件. 1.编译 File.cs 以产生 File.exe: csc File.cs 2.编译 File.cs 以产生 File.dll: ...
- SDIO接口
SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等. ...
- 面向连接的Socket Server的简单实现(简明易懂)
一.基本原理 有时候我们需要实现一个公共的模块,需要对多个其他的模块提供服务,最常用的方式就是实现一个Socket Server,接受客户的请求,并返回给客户结果. 这经常涉及到如果管理多个连接及如何 ...