> 文章列表 > JavaScript基础03 - DOM编程

JavaScript基础03 - DOM编程

JavaScript基础03 - DOM编程

JavaScript基础03

  • 001-DOM编程- 获取文本框的value
  • 002-DOM编程-innerHTML和innerText操作div和span
  • 003-DOM编程-关于正则表达式
  • 004-DOM编程-去除字符串前后的空白
  • 005-DOM编程-表单验证
  • 006-DOM编程-复选框的全选和取消全选
  • 007-DOM编程-
  • 008-DOM编程-显示网页时钟
  • 009-DOM编程-内置支持类Array

001-DOM编程- 获取文本框的value

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>DOM编程- 获取文本框的value</title></head><body><script type="text/javascript">/*1、JavaScript包括三大块:ECMAScript:JS的核心语法(ES规范/ECMA-262标准)DOM:Document Object Model(文档对象模型:对网页上的节点进行增删改的过程。)HTML文档被当做一颗DOM树来看待。var domObj = document.getElementById("id");BOM: Browser Object Model(浏览器对象模型)关闭浏览器窗口、打开一个新的浏览器窗口、后退、前进、浏览器地址栏上的地址等,都是BOM编程。2、DOM和BOM的区别和联系?BOM的顶级对象是:windowDOM的顶级对象是:document实际上BOM包括DOM!*//*window.onload = function () {//var btnElt = window.document.getElementById("btn");var btnElt = document.getElementById("btn");alert(btnElt); // [object HTMLInputElement]}*/window.onload = function () {var btnElt = document.getElementById("btn");btnElt.onclick = function () {/*// 获取username节点var usernameElt = document.getElementById("username");alert(username.value);*///alert(document.getElementById("username").value);// 可以修改它的valuedocument.getElementById("username").value = "zhangsan";}}</script><!--<input type="button" id="btn" value="hello"/>--><input type="text" id="username"/><input type="button" id="btn" value="获取文本框的value"/><hr><script type="text/javascript">window.onload = function () {document.getElementById("setbtn").onclick = function () {document.getElementById("username2").value = document.getElementById("username1").value}}</script><input type="text" id="username1"/><br><input type="text" id="username2"/><br><input type="button" id="setbtn" value="将第一个文本框中的内容赋值给第二个文本框"/><br><!--blur事件:失去焦点事件以下代码中的this代表的是当前input节点对象,this.value就是这个节点对象的value属性。--><input type="text" onblur="alert(this.value)"/></body>
</html>

002-DOM编程-innerHTML和innerText操作div和span

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>DOM编程-innerHTML和innerText操作div和span</title><style type="text/css">#div1{background-color: aquamarine;width: 300px;height: 300px;border: 1px black solid;position: absolute;top: 100px;left: 100px;}</style></head><body><!--innerHTML和innerText属性有什么区别?相同点:都是设置元素内部的内容。不同点:innerHTML,会把后面的“字符串”当作一段HTML代码解释并执行。innerText,即使后面是一段HTML代码,也只是将其当作普通的字符串来看待。--><script type="text/javascript">window.onload = function () {document.getElementById("btn").onclick = function () {// 设置div中的内容// 第一步:获取div对象var divElt = document.getElementById("div1");// 第二步:使用innerHTML属性来设置元素内部的内容//divElt.innerHTML = "Hello World!";//divElt.innerHTML = "<font color='red'>用户名不能为空!</font>";divElt.innerText = "<font color='red'>用户名不能为空!</font>";}}</script><input type="button" value="设置div中的内容" id="btn"/><div id="div1"></div></body>
</html>

003-DOM编程-关于正则表达式

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>DOM编程-关于正则表达式</title></head><body><script type="text/javascript">/*1、什么是正则表达式?有什么用?正则表达式:Regular Expression正则表达式主要用在字符串格式匹配上面。2、正则表达式实际上是一门独立的学科,在Java语言中支持,C语言中也支持,javascript中也支持。大部分编程语言都支持正则表达式。正则表达式最初使用在医学方面,用来表示神经符号。目前使用最多的是计算机编程领域。用作字符串格式匹配,包括搜索方面。3、正则表达式,对于我们javascript编程来说,掌握哪些内容呢?第一,常见的正则表达式符号要认识。第二,简单的正则表达式要会写。第三,他人编写的正则表达式要能看懂。第四,在javascript当中,怎么创建正则表达式对象!(new对象)第五,在javascript当中,正则表达式对象有哪些方法!(调方法)第六,要能够快速的从网络上找到自己需要的正则表达式,并且测试其有效性。4、常见的正则表达式符号?.匹配除换行符以外的任意字符\\w匹配字母或者数字或者下划线或汉字\\s匹配任意的空白符\\d匹配数字\\b匹配单词的开始或结束^匹配字符串的开始$匹配字符串的结束*重复零次或者更多次+重复一次或者更多次?重复零次或者一次{n}重复n次{n,}重复n次或者更多次{n,m}重复n到m次\\W匹配任意不是字母,数字,下划线,汉字的字符\\S匹配任意不是空白符的字符\\D匹配任意非数字的字符\\B匹配不是单词开头或结束的位置[^x]匹配除了x以外的任意字符[^aeiou]匹配除了aeiou这几个字母以外的任意字符正则表达式当中的小括号()优先级较高。[1-9]表示1到9的任意1个数字(次数是1次。)[A-Za-z0-9]表示A-Za-z0-9中的任意1个字符[A-Za-z0-9-]表示A-Z、a-z、0-9、-,以上所有字符中的任意1个字符。|表示或者[abc]表示匹配字符 a、b 或 c 中的任意一个5、简单的正则表达式要会写QQ号的正则表达式:^[1-9][0-9]{4,}$6、他人编写的正则表达式要能看懂?email正则,^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$7、怎么创建正则表达式对象,怎么调用正则表达式对象的方法?第一种创建方式:var regExp = /正则表达式/flags;第二种创建方式:var regExp = new RegExp("正则表达式","flags");关于flags:g : 全局匹配i : 忽略大小写m : 多行搜索(ES规范指定之后才支持m)当前面是正则表达式的时候,m不能用。只有前面是普通字符串的时候,m才能用。正则表达式对象的test()方法?true/false = 正则表达式对象.test(用户填写的字符串);true : 字符串格式匹配成功false : 字符串格式匹配失败*/window.onload = function () {// 给按钮绑定clickdocument.getElementById("btn").onclick = function () {var email = document.getElementById("email").value;var emailRegExp = /^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/;var ok = emailRegExp.test(email);if(ok){document.getElementById("emailError").innerText = "邮箱地址合法";}else{document.getElementById("emailError").innerText = "邮箱地址不合法";}}//给文本框绑定focusdocument.getElementById("email").onfocus = function () {document.getElementById("emailError").innerText = "";}}</script><input type="text" id="email"/><span id="emailError" style="color: red;font-size: 12px;"></span><br><input type="button" value="验证邮箱" id="btn"/></body>
</html>

004-DOM编程-去除字符串前后的空白

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>DOM编程-去除字符串前后的空白</title></head><body><script type="text/javascript">// 低版本的IE浏览器不支持字符串的trim()函数,怎么办?// 可以自己对String类扩展一个全新的trim()函数String.prototype.trim = function () {//alert("扩展之后的trim方法");//去除当前字符串的前后空白//在当前的方法中的this代表的就是当前字符串return this.replace(/^\\s+/,"").replace(/\\s+$/,"");}window.onload = function () {document.getElementById("btn").onclick = function () {// 获取用户名var username = document.getElementById("username").value;// 去除前后空白username = username.trim();// 测试alert("--->" + username + "<---");}}</script><input type="text" id="username"/><input type="button" value="获取用户名" id="btn"/></body>
</html><!--
表单验证;
(1)用户名不能为空。
(2)用户名必须在6-14位之间。
(3)用户名只能由数字和字母组成,不能含有其它符号(正则表达式)。
(4)密码和确认密码一致,邮箱地址合法。
(5)统一失去焦点验证。
(6)错误提示信息统一在span标签中提示,并且要求字体12号,红色。
(7)文本框再次获得焦点 后,清空错误提示信息,如果文本框中数据不合法要求清空文本框的value。
(8)最终表单中所有项均合法方可提交。-->

005-DOM编程-表单验证

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>表单验证</title><style type="text/css">span{color:red;font-size: 12px;}</style></head><body><script type="text/javascript">/*表单验证;(1)用户名不能为空。(2)用户名必须在6-14位之间。(3)用户名只能由数字和字母组成,不能含有其它符号(正则表达式)。(4)密码和确认密码一致,邮箱地址合法。(5)统一失去焦点验证。(6)错误提示信息统一在span标签中提示,并且要求字体12号,红色。(7)文本框再次获得焦点后,清空错误提示信息,如果文本框中数据不合法要求清空文本框的value。(8)最终表单中所有项均合法方可提交。*/window.onload = function () {//给用户名文本框绑定blur事件(失去焦点事件)//获取username的span标签var usernameError = document.getElementById("usernameError");var usernameElt = document.getElementById("username");usernameElt.onblur = function () {// 获取用户名var username = document.getElementById("username").value;// 去除前后空白username = username.trim();// 判断用户名是否为空/*if(Boolean(username)){// 代表username非空alert("username=" + username);}else{// 代表username为空alert("username为空字符串");}*///if(username.length == 0){}if(username === ""){// 用户名为空usernameError.innerText = "用户名不能为空!";}else{// 用户名不为空// 继续判断长度if(username.length < 6 || username.length > 14){usernameError.innerText = "用户名长度必须在[6-14]之间";}else{// 用户名长度合法// 继续判断是否含有特殊符号var regExp = /^[A-Za-z0-9]+$/;var ok = regExp.test(username);if(ok){// 用户名最终合法}else{// 用户名中含有特殊字符usernameError.innerText = "用户名只能由数字和字母组成";}}}}// 给username这个文本框绑定获得焦点事件usernameElt.onfocus = function () {// 清空非法valueif(usernameError.innerText != ""){username.value = "";}// 清空spanusernameError.innerText = "";}// 获取确认密码的提示标签var pwdError= document.getElementById("pwdError");// 获取确认密码框对象var userpwd2Elt = document.getElementById("userpwd2");// 绑定blur事件(失去焦点事件)userpwd2Elt.onblur = function () {// 获取密码和确认密码var userpwdElt = document.getElementById("userpwd");var userpwd = userpwdElt.value;var userpwd2 = userpwd2Elt.value;if(userpwd != userpwd2){// 密码不一致pwdError.innerText = "前后密码不一致";}else{// 密码一致}}// 给确认密码的这个文本框绑定获得焦点事件userpwd2Elt.onfocus = function () {if(pwdError.innerText != ""){userpwd2Elt.value = "";}pwdError.innerText = "";}// 获取email的spanvar emailError = document.getElementById("emailError");// 给email绑定blur事件var emailElt = document.getElementById("email");emailElt.onblur = function () {// 获取emailvar email = emailElt.value;// 编写email的正则var emailRegExp = /^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/;var ok = emailRegExp.test(email);if(ok){// 邮箱合法}else{// 邮箱不合法emailError.innerText = "邮箱地址不合法";}}// 给email绑定focus事件emailElt.onfocus = function () {if(emailError.innerText != ""){emailElt.value = "";}emailError.innerText = "";}// 给提交按钮绑定鼠标单击事件var submitBtnElt = document.getElementById("submitBtn");submitBtnElt.onclick = function () {// 触发username的blur/userpwd2的blur/email的blur// 不需要人工操作,使用纯JS代码触发事件。usernameElt.focus();usernameElt.blur();userpwd2Elt.focus();userpwd2Elt.blur();emailElt.focus();emailElt.blur();// 当所有表单项都是合法的时候,提交表单if(usernameError.innerText == "" && pwdError.innerText == "" && emailError.innerText == ""){// 获取表单对象var userFormElt = document.getElementById("userForm");// 可以在这里设置actionuserFormElt.action = "http://localhost:8080/jd/save";// 提交表单userFormElt.submit();}}}</script><!--这个表单提交应该使用post,这里为了检测,所以使用get。--><!--<form id="userForm" action="http://localhost:8080/jd/save" method="get">--><form id="userForm" method="get">用户名<input type="text" name="username" id="username"/><span id="usernameError"></span><br>密码<input type="text" name="userpwd" id="userpwd"/><br>确认密码<input type="text" id="userpwd2"/><span id="pwdError"></span><br>邮箱<input type="text" name="email" id="email"/><span id="emailError"></span><br><!-- <input type="submit" value="注册"/> --><input type="button" value="注册" id="submitBtn"/><input type="reset" value="重置"/></form></body>
</html>

006-DOM编程-复选框的全选和取消全选

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>复选框的全选和取消全选</title></head><body><script type="text/javascript">/*window.onload = function () {var firstChkElt = document.getElementById("firstChk");firstChkElt.onclick = function () {// 先获取第一个复选框的选中状态(复选框对象是checkbox对象)// alert(firstChkElt.checked);// 根据name获取所有元素var aihaos = document.getElementsByName("aihao");if(firstChkElt.checked){// 全选for(var i = 0; i < aihaos.length; i ++){aihaos[i].checked = true;}}else{// 取消全选for(var i = 0; i < aihaos.length; i ++){aihaos[i].checked = false;}}}}*/window.onload = function () {var aihaos = document.getElementsByName("aihao");var firstChkElt = document.getElementById("firstChk");firstChkElt.onclick = function () {// 先获取第一个复选框的选中状态(复选框对象是checkbox对象)// alert(firstChkElt.checked);// 根据name获取所有元素for(var i = 0; i < aihaos.length; i ++){aihaos[i].checked = firstChkElt.checked;}}// 对以上数组进行遍历var all = aihaos.length;for(var i = 0; i < aihaos.length; i ++){aihaos[i].onclick = function () {var checkedCount = 0;// 总数量和选中的数量相等的时候,第一个复选框选中。for(var i = 0; i < aihaos.length; i ++){if(aihaos[i].checked){checkedCount ++;}}/*if(all == checkedCount){firstChkElt.checked = true;}else{firstChkElt.checked = false;}*/firstChkElt.checked = (all == checkedCount);}}}</script><input type="checkbox" id="firstChk"/><br><input type="checkbox" name="aihao" vlaue="smoke"/>抽烟<br><input type="checkbox" name="aihao" value="drink"/>喝酒<br><input type="checkbox" name="aihao" value="tt"/>烫头<br></body></html>

007-DOM编程-

008-DOM编程-显示网页时钟

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>显示网页时钟</title></head><body><script type="text/javascript">/*关于JS中内置的支持类,Date,可以用来获取时间/日期*/// 获取系统当前时间var nowTime = new Date();// 输出//document.write(nowTime);// 转换成具有本地语言环境的日期格式。nowTime = nowTime.toLocaleString();document.write(nowTime);document.write("<br>");document.write("<br>");// 当以上格式不是自己想要的,可以通过日期获取年月日等信息,自定义日期格式。var t = new Date();var year = t.getFullYear(); // 返回年信息,以全格式返回。var month = t.getMonth(); // 月份是0-11//var dayOfWeek = t.getDay(); // 获取的是一周的第几天0-6var day = t.getDate(); // 获取日信息document.write(year + "年" + (month + 1) + "月" + day + "日");document.write("<br>");document.write("<br>");// 重点:怎么获取毫秒数?(从1970年1月1日 00:00:00 000到当前系统时间的总毫秒数)var times = t.getTime();//document.write(times); // 一般会使用毫秒数作为时间戳。(timestamp)document.write(new Date().getTime());</script><script type="text/javascript">function displayTime(){var time = new Date();var strTime = time.toLocaleString();document.getElementById("timeDiv").innerHTML = strTime;}// 每隔1秒钟调用displayTime()函数function start(){// 从这行代码执行结束开始,则会不间断的,每隔1000毫秒调用一次displayTime()函数v = window.setInterval("displayTime(), 1000");}function stop(){window.clearInterval(v);}</script><br><br><input type="button" value="显示系统时间" onclick="start();"/><input type="button" value="系统时间停止" onclick="stop();"/><div id="timeDiv"></div></body>
</html>

009-DOM编程-内置支持类Array

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>内置支持类Array</title></head><body><script type="text/javascript">/*// 创建长度为0的数组var arr = [];alert(arr.length);var arr2 = [1,2,3,false,"abc",3.14]; // 最常用alert(arr2.length); // 6// 下标越界吗arr2[7] = "test"; // 自动扩容// 遍历for(var i = 0; i < arr2.length; i++){document.write(arr2[i] + "<br>");}// 另外一种创建数组的对象的方式.var a = new Array();alert(a.length); // 0var a2 = new Array(3); // 3表示长度alert(a2.length); // 3var a3 = new Array(3,2);// 具体存储的元素3和2alert(a3.length); // 2*/var a = [1,2,3,9];var str = a.join("-"); // "1-2-3-9"alert(str);// 在数组的末尾添加一个元素(数组长度加1)a.push(10);alert(a.join("-")); // "1-2-3-9-10"// 将数组末尾元素弹出var endElt = a.pop(); // 10alert(a.join("-")); // "1-2-3-9"// 注意:JS中的数组可以自动模拟栈数据结构:后进先出,先进后出原则。// push压栈// pop弹栈// 反转数组a.reverse();alert(a.join("-")); // "9-3-2-1"</script></body>
</html>