当前位置:

JavaScript-DOM编程

访客 2024-04-24 877 0

一、innerHTMLinnerText操作div和span

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

示例代码:

<styletype="text/css">#div1{background-color:aqua;width:300px;height:300px;position:absolute;left:100px;top:100px;}</style><scripttype="text/javascript">window.onload=function(){vardtnElt=document.getElementById("dtn");dtnElt.onclick=function(){//设置div的内容//第一步:获取div的内容vardiv1Elt=document.getElementById("div1");//第二步:使用innerHTML属性来设置元素内部的部分//div1Elt.innerHTML="用户名输入为空!";//div1Elt.innerHTML="<fontcolor='red'>用户名输入为空!</font>";div1Elt.innerText="<fontcolor='red'>用户名输入为空!</font>";}}</script><inputtype="button"value="设置div的属性"id="dtn">javascript<divid="div1"></div>

二、JS的正则表达式(RegularExpression)

1、什么是正则表达式,有什么用?
      正则表达式是一门独立的学科,基本每个语言都支持。
      正则表达式不是JS专属的。不过在JS中使用居多。
      通常使用正则表达式进行字符串格式匹配。

      正则表达式是有一堆特殊的符号组成的一个表达式。
      每一个特殊的符号都有特殊的代表含义。

      例如:
        qq号的正则表达式。
        邮箱地址的正则表达式。

      邮箱地址格式验证:
        程序中有一个邮箱地址的正则表达式。
        用户输入了一个邮箱地址。
        那么邮箱地址的正则表达式和邮箱地址进行匹配,能匹配成功,表示合法,反之表示不合法。

2、对于javascript程序员来说,对于正则表达式掌握到什么程度?
      第一:能够看懂正则表达式
      第二:简单的正则要会写
      第三:要能够独立的从网络当中搜索到你想要的正则表达式(搜索能力要有)
      第四:要会创建JS的正则表达式对象。
      第五:要会调用JS正则表达式对象的方法。

3、常见的正则表达式符号有哪些?
      .匹配除换行符以外的任意字符
      \w匹配字母或数字或下划线或汉字
      \s匹配任意的空白符
      \d匹配数字
      \b匹配单词的开始或结束
      ^匹配字符串的开始
      $匹配字符串的结束

      *重复零次或更多次0-N次

      重复一次或更多次1-N次

      ?重复零次或一次0或1次

      {n}重复n次n次
      {n,}重复n次或更多次n次
      {n,m}重复n到m次n到m次
      注意:数量永远匹配的都是前面的那个字符出现的次数。

      \W匹配任意不是字母,数字,下划线,汉字的字符
      \S匹配任意不是空白符的字符
      \D匹配任意非数字的字符
      \B匹配不是单词开头或结束的位置
      [a-z]{1}a到z所有的字符中的任意1个。

      [a-zA-Z0-9]{3,}前面这堆中的任意字符至少出现3个。

      [1-9]没有指定数量的时候,默认是1个。

5、在JS中怎么创建正则表达式对象呢?

第一种方式:直接量语法
      varregExp=/正则表达式/标记

第二种方式:使用内置类RegExp类。
      varregExp=newRegExp(“正则表达式”,“标记”)

标记是可选项!!!!!都有哪些值可选呢?
      g:全局global
      i:忽略大小写ignorecase
      gi:全局扫描,并且忽略大小写。

6、正则表达式对象有一个很重要的方法:
      varemailRegExp=/^\w([-.]\w)@\w([-.]\w).\w([-.]\w)*$/
      varok=emailRegExp.test(“用户输入的字符串”);
      返回值ok是true表示,匹配成功了。>

其实在JS中,字符串String也是支持正则表达式的。

7、正则表达式对象的test()方法
      true/false=正则表达式对象.test(用户填写的字符串);
      true:字符串格式匹配成功
      false:字符串格式匹配失败

三、去除字符串前后空白trim函数

示例代码:

<body><scripttype="text/javascript">//自定义去除前后空白方法String.prototype.trim=function(){returnthis.replace(/^\s/,"").replace(/\s$/,"");}window.onload=function(){document.getElementById("btn").onclick=function(){varusername=document.getElementById("username").value;username=username.trim();alert("--->"username"<----");}}</script><inputtype="text"id="username"/><br><inputtype="button"value="获取用户名"id="btn"/></body>

四、表单验证

满足条件

(1)用户名不能为空
(2)用户名必须在6-14位之间
(3)用户名只能有数字和字母组成,不能含有其它符号(正则表达式)
(4)密码和确认密码一致
(5)统一失去焦点验证
(6)错误提示信息统一在span标签中提示,并且要求字体12号,红色。
(7)文本框再次获得焦点后,清空错误提示信息
(8)最终表单中所有项均合法方可提交

示例代码:

<body><scripttype="text/javascript">window.onload=function(){varusernameErrorElt=document.getElementById("usernameError");varusernameElt=document.getElementById("username");//失去焦点事件usernameElt.onblur=function(){//获取用户输入的用户名值varusername=usernameElt.value;//去除前后空格username=username.trim();//alert("-->"username"<--");//判断输入的用户名是否为空if(username===""){//用户名为空时执行此逻辑usernameErrorElt.innerText="用户名不能为空!";}else{//用户名不为空时执行此逻辑//用户名必须在[6-14]位之间if(username.length<6||username.length>14){//此时输入长度不符usernameErrorElt.innerText="用户名的长度必须是6-14之间";}else{varregExp=/^[A-Za-z0-9]$/;varok=regExp.test(username);if(!ok){//表示不符合规则usernameErrorElt.innerText="用户名只能有数字和字母组成,不能含有其它符号";}usernameErrorElt.innerText="";}}}//获得焦点事件usernameElt.onfocus=function(){//出错点,函数内的逻辑(不包含在if语句)肯定会执行!,if判断语句一定要在前!!!!!//当用户名文本框获得焦点时,清空文本框非法内容if(usernameErrorElt.innerText!=""){usernameElt.value="";}//当用户名文本框获得焦点时span清空usernameErrorElt.innerText="";}//获取密码验证标签varuserpwdErrorElt=document.getElementById("userpwdError");//获取确认密码标签varuserpwd2Elt=document.getElementById("userpwd2");//失去焦点事件userpwd2Elt.onblur=function(){//获取密码标签varuserpwdElt=document.getElementById("userpwd");//获取值varuserpwd=userpwdElt.value;varuserpwd2=userpwd2Elt.value;if(userpwd===userpwd2){userpwdErrorElt.innerText="";}else{userpwdErrorElt.innerText="密码输入错误";}}//绑定获得焦点事件userpwd2Elt.onfocus=function(){if(userpwdErrorElt.innerText!=""){userpwd2.value="";}//当用户名文本框获得焦点时span清空userpwdErrorElt.innerText="";}//获取邮箱验证标签varemailErrorElt=document.getElementById("emailError");//获取邮箱标签varemailElt=document.getElementById("email");//绑定邮箱失去焦点事件emailElt.onblur=function(){//获取值varemail=emailElt.value;varemailRegExp=/^\w([-.]\w)*@\w([-.]\w)*\.\w([-.]\w)*$/;varok=emailRegExp.test(email);if(ok){emailErrorElt.innerText="";}else{emailErrorElt.innerText="邮箱输入格式不对!";}}//绑定邮箱获得焦点事件emailElt.onfocus=function(){if(emailErrorElt.innerText!=""){emailElt.value="";}emailErrorElt.innerText="";}//获取注册按钮标签varbtnElt=document.getElementById("btn");//定义鼠标单击事件btnElt.onclick=function(){//系统自动获取和失去焦点,先获得焦点再失去焦点usernameElt.focus();usernameElt.blur()userpwd2Elt.focus();userpwd2Elt.blur();emailElt.focus();emailElt.blur();if(usernameErrorElt.innerText==""&&userpwdErrorElt.innerText==""&&emailErrorElt.innerText==""){//如果数据合法就跳转//获取表单标签varuserformElt=document.getElementById("userform");//formElt.action="http://localhost:8080/jd/save";//专用方法,提交表单userformElt.submit();}}}</script><!--这个表单提交应该使用post,这里为了检测,所以使用get--><formid="userform"action="http://localhost:8080/jd/save"method="get">用户名:<inputtype="text"name="username"id="username"/><spanid="usernameError"></span><br>密码:<inputtype="text"name="userpwd"id="userpwd"/><br>确认密码:<inputtype="text"id="userpwd2"/><spanid="userpwdError"></span><br>邮箱:<inputtype="text"name="email"id="email"/><spanid="emailError"></span><br><!--<inputtype="submit"value="注册"/>--><inputtype="button"value="注册"id="btn"><inputtype="reset"value="重置"/></form></body>

注意:此程序表单提交如果要跳转页面需要使用后台服务器,如果没服务器,页面不会跳转


页面跳转(没有服务器时):

五、复选框全选和取消全选

document.getElementById()
document.getElementsByName()
document.getElementsByTagName()

示例代码:

<body><scripttype="text/javascript">window.onload=function(){//获取多选框数组varaihaos=document.getElementsByName("aihao");//获取多选框标签varfirstChkElt=document.getElementById("firstChk");//设置鼠标单击事件firstChkElt.onclick=function(){for(vari=0;i<aihaos.length;i){//每个多选框都和头部多选框保持一致aihaos[i].checked=firstChkElt.checked;}}for(vari=0;i<aihaos.length;i){//给所有多选框设置鼠标单击事件varall=aihaos.length;aihaos[i].onclick=function(){varcheckedCount=0;//总数量和多选框数量相同的时候,第一个复选框选中for(vari=0;i<aihaos.length;i){if(aihaos[i].checked){checkedCount}}firstChkElt.checked=(all==checkedCount);}}}</script><inputtype="checkbox"id="firstChk"/><br><inputtype="checkbox"name="aihao"value="smoke"/>抽烟<br><inputtype="checkbox"name="aihao"value="drink"/>喝酒<br><inputtype="checkbox"name="aihao"value="tt"/>烫头</body>

六、获取下拉列表项中项的value

change事件

示例代码:

<body><!--第一种方式--><!--<selectonchange="alert(this.value)"><optionvalue="001">河南省</option><optionvalue="002">河北省</option><optionvalue="003">山东省</option><optionvalue="004">山西省</option></select>--><!--第二种方式--><scripttype="text/javascript">window.onload=function(){//获取下拉标签varfirstOptionElt=document.getElementById("firstOption");firstOptionElt.change=function(){alert(firstOptionElt.value);}}</script><selectid="firstOption"onchange="alert(this.value)"><optionvalue="001">河南省</option><optionvalue="002">河北省</option><optionvalue="003">山东省</option><optionvalue="004">山西省</option></select></body>

七、显示网页时钟

window.setInterval()
window.clearInterval()
主要两个函数

示例代码:

<body><scripttype="text/javascript">//出错点,start不能放在onload里!!!!!!!!!functiondisplayTime(){vartime=newDate();varstrTime=time.toLocaleString();document.getElementById("div").innerHTML=strTime;}//设置显示的事件一直会变化functionstart(){v=window.setInterval("displayTime()",1000);}functionstop(){window.clearInterval(v);}</script><inputtype="button"value="显示系统当前时间"onclick="start();"/><inputtype="button"value="时间停止"onclick="stop();"/><divid="div"></div></body>

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~