JavaScript Dom学习笔记(一)

在这篇博客里面我们主要讲述了form对象,以及写JavaScript代码的时候不同浏览器之间的差异和在JavaScript中使用正则表达式的一些知识点,接下来我们做了两个练习来说明了这些知识点,那就是:回车实现Tab跳转和全额文本框。

form对象
(1) 先来写段代码举例说明一下吧

 代码如下 复制代码

<form id="form1" action="ball.htm" onsubmit="if(document.getElementById('name').value.length<=0){alert('不能为空');return false;}">
 
     <input type="text" id="name" onblur="document.getElementById('form1').submit()" />
 
     <input type="button" id="btn1" onclick="alert('我惦记了')" value="一个按钮" />
 
     <input type="button" value="我最先提交" onclick="document.getElementById('btn1').click()" />
 
     <input type="button" value="提交吧" onclick="document.getElementById('form1').submit()" />
 
     <input type="submit" value="验证Form" />
 
 </form>

(2) form对象是表单的Dom对象

(3) 方法:submit提交表单,但是不会触发onsubmit事件。

(4) 实现autopost,也就是焦点离开控件以后页面页面立即提交,而不是只有提交submit按钮以后才提交,当光标离开的时候出发onblur事件,在onblur中调用form的submit方法。

(5) 再点击submit后form的onsubmit事件被触发,在onsubmit中可以进行数据校验,数据有问题,返回false既可以取消提交。

例题说明:

 代码如下 复制代码

<form id="form1" action="dongoto.htm">
 
         <select onchange="document.getElementById('form1').submit()">
 
             <option>吉林</option>
 
             <option>甘肃</option>
 
             <option>北京</option>
 
         </select>
 
         <input type="submit" />
 
     </form>

不同浏览器的差异
(1) 面试题:说说开发项目的时候不同浏览器的不同点,你是怎么解决的?

Appendchild,insertcell,px。

(2) 不同浏览器中对Dom支持的方法不一样。

 1) 获取网页中哪个元素触发了事件,在IE中使用srcElement;在FireFox下面使用target。

 2) 使用Dom获取和更改网页标签元素内文本,在IE中使用innerText,在FireFox中使用textContent。

 3) 动态为网页和元素绑定事件,在IE中绑定事件的方法是:attachEvent,在FireFox中绑定事件的方法是AddEventListener。

(3) 不同浏览器中对CSS的支持不一样,所以出现在IE中显示正常的网页,在FF下面全部乱点了,哀悼网页使用的CSS只有IE支持,FF都不支持。

(4) JQuery之类的框架进行s了封装,将不同的浏览器的差异帮开发人员处理了,开发人员只要调用Jquery方法,Jquery会帮助在不同的浏览器中进行翻译,用JQuery就可以解决不同浏览器上的Dom的不同。

JS中的正则表达式
(1) JavaScript中创建正则表达式类的方法:

 1) var regex=new RegExp(”\d{5}”)或者var regex=^d{5}/

 2) /表达式/是JavaScript中专门为简化正则表达式编写而提供的语法,写在//中的正则表达式就不用管转义符了。

(2) RegExp对象的方法

 1) test(str)判断字符串str是否匹配正则表达式,相当于IsMatch。

     var regex=/.+@.+/;

     alert(regex.test(’934532778#qq.com’));

     alert(regex.test(’sss.ss.com’));

 2) exec(str)进行搜索匹配,返回值为匹配结果。

 3) compile编译表达式,提高运行速度。

(3) string对象中提供了一些与正则表达式相关的方法,相当于对于RegExp类的包装,简化调用。

 1) match(regexp),相当于调用exec。

   var s=934532778@qq.com;

   var regex=/(.+)@(.+)/;

     s.match(regex);

alert(regexp.$1);  alert(RegExp.$2);  //取得第一组和第二组的值。

案例1
回车实现Tab跳转,响应文本框的onkeyDown事件,window.event.keyCode获得用户点击的keycode。(*)

keyCode和ASCII不是完全一致,主键盘的1和小键盘的1的ASCII一样,但是keyCode不一样,回车的KeyCode为13,tab的keyCode为9

 代码如下 复制代码

<body onkeydown="if(window.event.keyCode==13){window.event.keyCode=9}">
 
 <input type="text" />
 
 <input type="text" />
 
 <input type="text" />
 
 <input type="text" />
 
 </body>

案例2
全额文本框:财务相关系统中涉及到金额的文本框有如下要求:

(1) 进入金额文本框下不使用中文输入法。

(2) 不能输入非数字。

(3) 焦点在文本框中的时候文本框左对齐,焦点离开文本框中的时候文本框右对齐,显示千分位。

注释:(1) 禁用输入法:style=”inne-mode:disabled”。

(2) 禁止键入非法值,只有这些才能够被键入

(3) 禁止黏贴(伟大的tester),<input onpaste=”return false;”>大暴力,应该只是禁止黏贴非法值,在onpaste中通过clipboardData.getData(‘text’)取到黏贴板中的值,然后遍历每个字符,看是否是合法的值,如果全部是合法值,才允许黏贴,只要有一个非法值就禁止黏贴。

(4) 添加千分位

 代码如下 复制代码

<script type="text/javascript">
 
         function numkeyDown() {
 
             var k = window.event.keyCode;
 
             return isValidNum(k);  //判断K是否是合法的ASCII
 
         }
 
         function isValidNum(k) {
 
             return (k == 9) || (k == 13) || (k == 46) || (k == 80) || (k == 189) || (k == 109) || (k == 190) || (k == 110) || (k >= 48 && k <= 57) || (k >= 96 && k == 105) || (k >= 37 && k <= 40);
 
         }
 
         function numpaste() {
 
             var text = clipboardData.getData("text");
 
             for (var i = 0; i < text.length; i++) {
 
                 var asc = text.charCodeAt(i); //charAt——>"3",charCodeAt取ASCII码
 
                 if (!isValidNum(asc)) {  //遇到一个非法值就认为要黏贴的内容是非法的。
 
                     return false;
 
                 }
 
             }
 
         }
 
     </script>
 
 </head>
 
 <body>
 
 <input type="text" onpaste="return numpaste()" onkeydown="return numkeyDown"
 
 onfocus="this.style.textalige='left'"
 
  onblur="this.style.textalige='right'"
 
   style="ime-mode:disabled"  />
 
 </body>

时间: 2024-09-29 08:53:40

JavaScript Dom学习笔记(一)的相关文章

比较详细的javascript DOM 学习笔记第1/2页_javascript技巧

一.DOM基础1.节点(node)层次Document--最顶层的节点,所有的其他节点都是附属于它的.DocumentType--DTD引用(使用<!DOCTYPE>语法)的对象表现形式,它不能包含子节点.DocumentFragment--可以像Document一样来保存其他节点.Element--表示起始标签和结束标签之间的内容,例如<tag></tab>或者<tag/>.这是唯一可以同时包含特性和子节点的节点类型.Attr--代表一对特性名和特性值.这

Javascript基础学习笔记(菜鸟必看篇)_基础知识

什么是变量? 变量是用于存储信息的容器 变量的声明 语法: var 变量名 变量名 = 值; 变量要先声明再赋值 变量可以重复赋值 变量的命名规则 变量必须以字母开头: 变量也能以$和_符号开头(不过我们不推荐这么做): 变量名称对大小写敏感(a和A是不同的变量). 语句 语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾. 有个好的编码习惯,都要以 ; 结尾 数据类型 在JavaScript中,一段信息就是一个值(value).值有不同的类型,大家最熟悉的类型是数字.字符串(strin

JavaScript DOM 学习总结(五)_javascript技巧

1.DOM简介. 当页面加载时,浏览器会创建页面的文档对象模型(Document Object Model).文档对象模型定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构,即节点树.通过DOM,JS可创建动态的HTML,可以使网页显示动态效果并实现与用户的交互功能.JS能够改变页面中所有的HTML元素.属性和CSS样式,并对页面中所有事件做出响应.所以学习JS的起点就是处理网页,处理网页就需要使用DOM进行操作. 2.DOM获取元素. JS要想操作H

JavaScript闭包学习笔记

原文:JavaScript闭包学习笔记 闭包(closure)是JavaScript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于JavaScript初学者应该是很有用的. 一.变量的作用域 要理解闭包,首先必须理解JavaScript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. JavaScript语言的特殊之处,就在于函数内部可以直接读取全局变量. 1 var n=999; 2 3 function f1() { 4 alert

JavaScript继承学习笔记【新手必看】_javascript技巧

JavaScript作为一个面向对象语言(JS是基于对象的),可以实现继承是必不可少的,但是由于本身并没有类的概念,所以不会像真正的面向对象编程语言通过类实现继承,但可以通过其他方法实现继承.实现继承的方法很多,下面就只是其中的几种. 一. 原型链继承 function Person() { //被继承的函数叫做超类型(父类,基类) this.name='mumu'; this.age='18'; } Person.prototype.name='susu';//当属性名相同时需就近原则,先在实

JavaScript DOM学习第一章 W3C DOM简介_基础知识

在这一章我主要介绍已经被新一代的浏览器所支持的W3C 第一级的DOM.对他的运作做一个大概的了解并且让你知道你可以对他们做什么. 首先是对于DOM的一些建议和DOM设计的目的,然后我会告诉你什么是节点(nodes)并且怎样通过DOM树来遍历节点.接着是如何得到一个特定的节点,以及怎样改变他的值和属性.最后就是DOM的终极目标:怎么创建一个自己的新节点. 建议 Level 1DOM是W3C制定的用来提供给任何程序语言来访问XML文档的.不管你用什么语言程序来处理XML文档,只要是Level 1DO

整理Javascript函数学习笔记_javascript技巧

1.什么是函数 如果需要多次使用同一段代码,可以把它们封装成一个函数.函数(function)就是一组允许在你的代码里随时调用的语句.每个函数实际上是一个短小的脚本. 如:要完成多组数和的功能. var sum; sum = 3+2; alear(sum); sum = 7+8; alear(sum); ......//不停的重复两行代码 如果要实现8组数的和,就需要16行代码,实现的越多,代码行也就越多.所以我们可以把完成特定功能的代码块放到一个函数里,直接调用这个函数,就省去重复输入大量代码

MS XML DOM 学习笔记Demo程序

dom|xml|笔记|程序 Demo程序演示了MSXML DOM方式的使用方法 程序将输出以下结果: <?xml version="1.0"?><root version="1.0" company="xxx">        <date>2005-08-01</date>        <book>                <name>UML和模式应用</nam

JavaScript DOM事件(笔记)_javascript技巧

第1章 事件流 1-1.事件冒泡:事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收; 然后逐级向上传播至最不具体的那个节点(文档); 1-2.事件捕获:不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件; 第2章 事件处理程序 2-1 HTML事件处理程序 //缺点:HTML和JS代码紧密的耦合在一起; <input type="button" value="按钮" onclick="showMessage()"&g