JavascriptDOM

it2025-11-29  9

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的顶级对象是window DOM的顶级对象是document 实际上BOM是包括DOM的 window.document.getElementById("id");

获取文本框的value

1、获取文本框的value 2、获取文本框1的value,然后赋值给文本框2,并且让文本框1的值清空

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript"> window.onload = function (){ var btnElt = document.getElementById("btn"); btnElt.onclick = function (){ // //获取节点 // var usernameElt = document.getElementById("username"); // alert(usernameElt.value); //获取文本框1的值赋值给文本框2,并且文本框1的值清零 var username = document.getElementById("username").value; document.getElementById("usernamecopy").value = username; document.getElementById("username").value= ""; } } </script> </head> <body> <input type="text" id="username" /> <input type="text" id="usernamecopy" /> <input type="button" value="获取文本框的value" id = "btn" /> </body> </html>

blur事件,失去焦点事件

//以下代码中this代表的是当前input节点对象,this.value就是这个节点对象的value属性 <input type="text" onblur="alert(this.value)">

innerHTML和innerText操作div和spn

innerHTML和innerText区别: 相同点:都是设置元素内部的内容。 不同点: innerHTML:会把后面的”字符串“当作一段HTML代码解释并执行。 innerText: 即使后面是一段HTML代码,也是将其当作普通的字符串来看待

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #div1{ background-color: brown; width: 300px; height:400px; border: 1px black solid; position: absolute; top: 100px; left: 200px; } </style> </head> <body> <script type="text/javascript"> window.onload = function (){ var btn = document.getElementById("btn"); btn.onclick = function (){ var divElt = document.getElementById("div1"); divElt.innerHTML = "<font color='#623cff'>会按照HTML读出来,字体红色显示</font>" // divElt.innerText = "<font color='#623cff'>会带着标签全部显示出来</font>"; } } </script> <input type="button" value="设置div内容" id="btn" /> <div id="div1"></div> </body> </html>

正则表达式

正则表达式主要用在字符串格式匹配方面。 正则表达式实际上是一门独立的学科,在Java语言中支持、C语言也支持,JS也支持 1、 常见的正则表达式

. 匹配除换行符以外的任意字符 \w 匹配字母或者数字或者下划线或者汉字 \s 匹配任意空白符 \d 匹配数字 \b 匹配单词的开始或者结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 匹配次数的: * 重复零次或者更多次 + 重复一次或者更多次 ? 重复零次或者一次 {n} 重复n次 {n,}重复n次或者更多次 {n,m} 重复n到m次 \W 匹配任意不是字母或者数字或者下划线或者汉字的字符 \S 匹配任意不是空白符 \D 匹配任意非数字的字符 \B 匹配任意不是单词的开始或者结束的位置 [^x] 匹配除了x以外的任意字符 [^asdf] 匹配除了asdf这几个字符以外的任意字符

2、简单的正则表达式要会写: 小括号()的优先级较高 [1-9] 表示1到9的任意一个数字(字数是一) [A-Za-z0-9]表示A-Za-z0-9中任意一个字符 [A-Za-z0-9-]表示A-Z、a-z、0-9、-,中任意一个字符

QQ的正则表达式:^[1-9][0-9]{4,}$

3、别人编写的正则表达式要会写

email邮箱:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

4、怎么创建正则表达式对象,怎么调用正则表达式方法?

'第一中:' var regExp = /正则表达式/; '第二种:' var regExp = new RegExp("正则表达式"); 关于flags: g:全局匹配 i:忽略大小写 m:d多行搜索(ES规范之后才支持m),当前面是正则表达式的时候,m不能用。只有前面是普通字符串的时候,m才可以使用

正则表达式对象test的使用:

var ok = regExpForm.test(regExpString);

onfocus聚焦事件,当聚焦时要发生的事件:

//给文本框绑定focus document.getElementById("emailRegExp").onfocus = function (){ document.getElementById("emailError").innerText=""; } <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script type="text/javascript"> window.onload = function (){ document.getElementById("regExp").onclick = function (){ var regExpForm = new RegExp("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"); var regExpString = document.getElementById("emailRegExp").value; var ok = regExpForm.test(regExpString); if (!ok){ document.getElementById("emailError").innerText = "邮箱不合法"; }else{ document.getElementById("emailError").innerText = "邮箱合法"; } } //给文本框绑定focus document.getElementById("emailRegExp").onfocus = function (){ document.getElementById("emailError").innerText=""; } } </script> <input type="text" id="emailRegExp" /> <span id="emailError" style="color: #B22222; font-size:15px"></span> <input type="button" value="验证" id="regExp" /> </body> </html>

去除字符串前后的空白

username.trim();

<script type="text/javascript"> 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" />

也可以自定义trim函数:

String.prototype.trim = function (){ //this就代表当前字符串 return this.replace(/^\s+/,"").replace(/\s+$/,""); }

表单验证

需求: 1、用户名不能为空 2、用户名必须在6-14位之间 3、用户名由字母和数字组成,不能包含其他字符(正则表达式) 4、密码和确认密码一致,邮箱地址合法 5、统一失去焦点验证 6、错误提示信息统一显示在span便签中。宋体12,红色 7、文本框再次获得焦点后,清空提示信息,如文本框中数据不合法要求晴空文本框的value 8、最终表单中所有项均合法可提交 实现:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> span,input{margin:5px 10px;} </style> </head> <body> <script type="text/javascript"> window.onload = function (){ //获取用户名错误信息 //注意这里是document.getElementById("usernameError");而不是document.getElementById("usernameError").value; var usernameError = document.getElementById("usernameError"); //获取用户属性 var usernameId = document.getElementById("username"); // 用户名失去焦点时验证 usernameId.onblur = function () { //用户输入正则表达式 var usernameRegExp = /^[0-9a-zA-Z]{6,14}$/; //获取用户名 var username = usernameId.value; //去除空白 username = username.trim(); var ok = usernameRegExp.test(username); if (!ok || username == "" || username == null) { usernameError.innerText = "用户名错误,用户名为6-14位数字和字母组成"; } } // 用户名获得焦点时错误清空 usernameId.onfocus = function(){ //需要注意判断,如果输入的话,错误提示信息不为空时是输入错误,再清空 if (usernameError.innerText != ""){ usernameId.value = ""; } //清空span usernameError.innerText = ""; } //密码错误提示 var pwdErrorMes = document.getElementById("pwdErrorMes"); //密码判断 var userpwd1Elt = document.getElementById("password1"); var userpwd2Elt = document.getElementById("password2"); userpwd2Elt.onblur = function (){ password1 = userpwd1Elt.value; password2 = userpwd2Elt.value; if (password1 !=password2){ pwdErrorMes.innerText = "两次密码不一致"; }else{ // } } //密码绑定focus事件 userpwd2Elt.onfocus = function (){ if (pwdErrorMes.innerText != ""){ userpwd2Elt.value = ""; } pwdErrorMes.innerText = ""; } //邮箱判断 //获取邮箱属性元素 var emailElt = document.getElementById("email"); var emailErrorMes = document.getElementById("emailErrorMes") emailElt.onblur = function emailOurBlur(){ var regExpForm = new RegExp("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"); var regExpString = emailElt.value; var ok = regExpForm.test(regExpString); if (!ok){ emailErrorMes.innerText = "邮箱不合法"; } } //邮箱绑定focus emailElt.onfocus = function (){ if (emailErrorMes.innerText !=""){ emailElt.value = ""; } emailErrorMes.innerText = ""; } //给注册按钮绑定点击事件 var submitbtn = document.getElementById("btn"); submitbtn.onclick = function () { //触发username的blur,password2的blur,email的blur //不需要人工操作,使用纯js代码 usernameId.focus(); usernameId.blur(); userpwd2Elt.focus(); userpwd2Elt.blur(); emailElt.focus(); emailElt.blur(); //当所有项目都合法时候,提交表单 if (usernameError.innerText ==""&& pwdErrorMes.innerText==""&&emailErrorMes.innerText==""){ //获取表单 var userFormElt = document.getElementById("userForm"); //可以在这里设置action,也可以不在这里,在form也可以 userFormElt.action = "http://localhost:8080/jd/save"; //提交表单 userFormElt.submit(); }else{ //判断什么不合法,并提示 if (usernameError.innerText !=""){ alert(usernameError.innerText) } if (pwdErrorMes.innerText !=""){ alert(pwdErrorMes.innerText) } if (emailErrorMes.innerText !=""){ alert(emailErrorMes.innerText) } } } } </script> <form action="" id="userForm" method="get"> <input type="text" name="username" placeholder= "请输入用户名" id="username"/><span id="usernameError" style="color: #B22222;size: 14px"></span><br/> <input type="text" name="password" placeholder= "请输入密码" id="password1" /><br/> <input type="text" placeholder= "请确认输入密码" id="password2"/><span id="pwdErrorMes" style="color: #B22222;size: 14px"></span><br/> <input type="text" name="email" placeholder= "请确认输入邮箱地址" id="email"/><span id="emailErrorMes" style="color: #B22222;size: 14px"></span><br/> <input type="button" value="注册" id="btn" style="margin-right: 50px"/> <input type="reset" value="重置" style="margin-right: 50px"/> </form> </body> </html>

复选框的全选和取消全选

getElementsByName 获取名字属性 firstChk.checked = true/false 复选框是选还是不选 // 单个选中复选框,并且检查是否全选,如果全选则全选框也选定,否则不选定 for (var i=0;i<aihao.length;i++){ aihao[i].onclick = function () { var checkCount = 0; //总数量和选中的数量相等的时候,第一个复选框选中 for (var i=0;i<aihao.length;i++){ if (aihao[i].checked){ checkCount++; } } firstChk.checked = (aihao.length ==checkCount) } } <body> <script type="text/javascript"> window.onload = function () { var firstChk = document.getElementById("firstChk"); //getElementsByName获取名字属性 var aihao = document.getElementsByName("aihao"); firstChk.onclick = function () { //获取第一个复选框的选中状态(复选框对象checkbox对象) //alert(firstChk.checked); for (var i=0;i<aihao.length;i++){ aihao[i].checked = firstChk.checked; } } // 单个选中复选框 for (var i=0;i<aihao.length;i++){ aihao[i].onclick = function () { var checkCount = 0; //总数量和选中的数量相等的时候,第一个复选框选中 for (var i=0;i<aihao.length;i++){ if (aihao[i].checked){ checkCount++; } } firstChk.checked = (aihao.length ==checkCount) } } } </script> <input type="checkbox" id="firstChk"/>全选<br/> <input type="checkbox" name="aihao" value="smoke"/>抽烟<br/> <input type="checkbox" name="aihao" value="drink"/>喝酒<br/> <input type="checkbox" name="aihao" value="tt"/>烫头<br/> </body>

获取下列类别选项中的value

<body> <select name="" id="selectId" onchange="alert(this.value)" style="text-align: center"> <option value="">-----请选择省份----</option> <option value="001">河北省</option> <option value="002">河南省</option> <option value="003">湖南省</option> <option value="004">陕西省</option> <option value="005">山西省</option> </select> </body>

显示网页时钟/周期函数setInterval

<body> <!-- 关于JS中内置的支持类,Date,可以用来获取时间/日期--> <script type="text/javascript"> //获取系统当前时间 var nowTime = new Date(); nowTime = nowTime.toLocaleString(); document.write(nowTime); //以上时间不是自己想要的,可以通过日期获取年月日等信息,自定制日期格式 document.writeln("<br/>") document.writeln("<br/>") document.writeln("<br/>") //获取年月日时间 var t = new Date(); var year = t.getFullYear(); var month = t.getMonth(); var day = t.getDate(); document.write(year+"-"+month+"-"+day); document.writeln("<br/>") document.writeln("<br/>") document.writeln("<br/>") //怎么获取毫秒数?(从1970年一月一日 00:00:00 000到当前时间的毫秒数) document.write(new Date().getTime()); </script> <script type="text/javascript"> function displayTime(){ var time = new Date(); var strTime = time.toLocaleString(); document.getElementById("timeDiv").innerText = strTime; } //每隔一秒调用displatTime函数 function start(){ //不能用var修饰,不修饰是全局变量,修饰是局部变量 v = window.setInterval("displayTime()",1000); } function stop(){ windows.clearInterval(v); } </script> <br/> <br/> <!-- <input type="button" value="显示系统时间" onclick="displayTime();">--> <input type="button" value="显示系统时间" onclick="start();"> <input type="button" value="停止系统时间" onclick="stop();"> <div id="timeDiv"></div> </body>

内置支持类Array

创建:

<body> <script type="text/javascript"> //创建长度为0的数组 var arr = []; //数据类型随意 var arr = [1,2,"12",true,2.36] //下标会越界 arr[7] = "test"; //js会自动扩充数组,缺省则自动补充为undefined alert(arr[7]); alert(arr[6]); //遍历 for (var i=0;i<arr.length;i++){ document.write(arr[i]); document.write("<br/>"); } //另一种创建 var a = new Array(3); var a = new Array(3,2); alert(a.length)//2 </script> </body>

数组方法:

<script type="text/javascript"> //数组内容连接 var a = [1,2,3,"55","qq"]; var str = a.join("--") alert(str); //Js的数组可以自动模拟栈数据结构,后进先出,先进后出原则 //push进栈 //pop出栈 //反转 a.reverse(); </script>

最新回复(0)