DOM2:

1、DOM2中:创建一个完整的HTML文档

document.implementation.createHTMLDocument("new Doc");

alert(htmldoc.title);------"New Doc"

alert(typeof htmldoc.body);-----"object"

2、 样式:

1)     在css属性是color,background-image ,在js中style.color,style.backgroundImage

float是js中的保留字,不能作为属性名,在样式对象是cssFloat,在IE中则是styleFloat

var a=document.getElementById("myDiv");

a.style.backgroundColor="red";

2)      cssText:它能够访问style特性中的CSS代码

myDiv.style.cssText="width:25px;height:100px;background-color:green";

alert(myDiv.style.cssText);

3)     getPropertyValue(propertyName):返回给定属性的字符串值

var prop,value,i,len;

for(i=0,len=myDiv.style.length;i<len;i++){

prop=myDiv.style[i] ; //或者myDiv.style.item(i);

value=myDiv.style.getPropertyValue(prop); ---字符串表示

alert(prop+":"+value);

}

4)     返回给定位置的css属性的名称

5)     removeProperty(propertyName)

myDiv.style.removeProperty("border");

6)     包含重叠的样式并影响到当前元素:getComputedStyle()方法,接收两个参数,要取得计算样式的元素和一个伪元素字符串(eg::after),如果不需要伪元素,将第二个参数设为null,

<style type="text/css">

#myDiv{

background-color:blue;

width:100px;

height:200px;

}

</style>

<div id="myDiv" style="border:1px solid black"></div>

js:

var myDiv=document.getElementById("myDiv");

var computedStyle=document.defaultView.getComputedStyle(myDiv,null);

alert(computedStyle.backgroundColor); ----red

alert(computedStyle.width);

alert(computedStyle.border);-----有些浏览器返回1px solid black

3、操作样式表;

1)

var sheet=null;

for(var i=0,len=document.styleSheets.length;i<len;i++){

sheet=document.styleSheets[i];

alert(sheet.href);

}

2)

Css规则:

Var sheet=document.styleSheets[0]------第一个样式表

Var rules=sheet.cssRules || sheet.rules;   ----取得规则表

Var rule=rules[0]   --------------第一条规则

Alert(rule.selectorText); ---------------“div .box”

Alert(rule.style.cssText); -----------css代码

删除规则:

function deleteRule(sheet,index){

if(sheet.deleteRule){

sheet.deleteRule(index);

}else if(sheet.removeRule){

sheet.removeRule(index);  ----IE

}

}

deleteRule(document.styleSheet[0],0);----调用函数

4、元素大小

1)     偏移量:

  • offsetHight:元素在垂直方向上占用空间的大小,元素高度+水平滚动条高度+上边框高度+下边框高度
  • offsetWidth:元素在水平方向上占用的空间大小,与offsetHight的计算方式类似
  • offsetLeft:元素的左外边框至包含元素的左内边框之间的距离
  • offsetTop:元素的上外边框至包含元素的上内边框之间的距离

function getElementLeft(element){

// offsetLeft以及offsetTop与包含元素有关,包含元素的引用在offsetParent中

var actualLeft=element.offsetLeft;

var current=element.offsetParent;

while(current !==null){

actualLeft+=current.offsetLeft;

current=current.offsetParent;

}

return actualLeft;

}

2)     客户区大小:clientWidth以及clientHeight(内容区+内边距高度)

function getViewport(){

if(document.compatMode=="BlackCompat"){

return{

width:document.body.clientWidth;

height:document.body.clientHeight;

};

}else{

return{

width:document.documentElement.clientWidth;

height:document.documentElement.clientHeight;

}

}

}

3)     滚动大小:

scollHeight:在没有滚动条的情况下,元素内容的总高度

scollWidth:在没有滚动条的情况下,元素内容的总宽度

scollLeft:被隐藏在内容区域左侧的像素数,通过设置这个属性可以改变元素的滚动位置

scollTop:被隐藏在内容区域上方的像素数,通过设置这个属性可以改变元素的滚动位置

var docHeight=Math.max(document.documentElement.scollHeight,

document.documentElement.clientHeight);

var docWidth=Math.max(document.documentElement.scollWidth,

document.documentElement.clientWidth);

function scollToTop(element){

if(element.scollTop!=0){

element.scollTop=0;

}}

5、遍历:

1)     NodeInterator:4个参数,root,表示要访问哪些节点的数字代码,filter,false

当filter==null的时候,遍历所有

var div=document.getElementById("div1");

var filter=function(node){

return node.tagName.toLowerCase()=="li"?

NodeFilter.Filter_ACCEPT:

NodeFilter.Filter_SKIP;

}

var interator=document.createNodeInterator(div,NodeFilter.

SHOW_ELEMENT,filter,false);

var node=interator.nextNode();   //previousNode()

while(node!=null){

alert(node.tagName);

node=interator.nextNode();

}

2)     TreeWalker

var walker=document.createTreeWalker(div,

NodeFilter.SHOW_ELEMENT,filter,false);

walker.firstChild();

walker.nextSibling();----下一个同辈元素

walker .currentNode----目前的起点

6、DOM中的范围:

1)     createRange():

setStartBefore(refNode):

setStateAfter(refNode):

setEndBefore(refNode):

setEndAfter(refNode):

eg:

<p id="p1"><b>Hello</b> world</p>

var range1=document.createRange();

range2=document.createRange();

p1=document.getElementById("p1");

range1.selectNode(p1);

range2.selectNodeContents(p1);

range1---><p id="p1"><b>Hello</b> world</p>

range2---><b>Hello</b> world

2)     var p1=document.getElementById("p1");

helloNode=p1.firstChild.firstChild; ----Hello

worldNode=p1.lastChild;   ---- world

var range=document.createRange();

range.setStart(helloNode,2); ----llo

range.setEnd(worldNode,3);   ---- wo

<p><b>He</b><b>llo</b> world</p>

“world”会划分为wo以及rld

3)     range.deleteContents();

会输出<p><b>He</b> rld</p>

4)     extractContents()会返回范围的文本片段

var fragment=range.extractContents();

p1.parentNode.appendChild(fragment);

<p><b>He</b> rld</p>

<b>llo</b> wo

5)     cloneContents()保存的是范围节点中的副本,而不是实际节点

var fragment=range.cloneContents();

p1.parentNode.appendChild(fragment);

<p><b>Hello</b> world</p>

<b>llo</b> wo

6)     insertNode()向范围选区的开始处插入一个节点

var span=document.createElement("span");

span.style.color="red";

span.appendChild(document.createTextNode("inserted text"));

range.insertNode(span);

输出:<p><b>He<span style="color:red">inserted text</span>llo</b> world</p>

7)     折叠到DOM范围:

range.collapse(true); //折叠到起点为true

8)     清理DOM范围

range.detach();//从文档中分离出来

range=null;

表单脚本:

1、documen.forms可以取得页面中所有的表单

var firstForm=document.forms[0];

var myForm=document.forms["foem2"];

2、提交表单:

1)     <input type="submit" value="submit">

//自定义提交按钮

<button type="submit">submot</button>

//图片按钮

<input type="image" src="gg.gif">

2)     在js中以编程方式提交按钮 :

var form=document.getElementById("myForm");

form.submit();

但不会触发submit事件,所以在调用此方法之前需要先验证表单数据

表单重复提交:

方法1:

var checkSubmitFlg = false;

function checkSubmit() {

if (!checkSubmitFlg) {

// 第一次提交

checkSubmitFlg = true;

return true;

} else {

//重复提交

alert("Submit again!");

return false;

}

}

方法2:

EventUtil.addHandler(form,"submit",function(event){

event=EventUtil.getEvent(event);

var target=EventUtil.getTarget(event);

var btn=target.elements["submit-btn"];

btn.disable=true;

})

4、重置表单:

form.reset(); //会像单击重置按钮一样触发reset事件

5、表单字段:

var form=document.getElementById("form1");

//取得表单的第一个字段

var field1=form.elements[0];

//取得名为textbox1的字段

var field2=form.elements["textbox1"];

//取得表单中包含的字段的数量

var fieldCount=form.elements.length;

当多个表单控件同时使用一个name的时候,返回的是一个NodeList

6、共有的表单字段属性

form---指向当前字段所属表单的指针,只读

var form=document.getElementById("form1");

var field=form.elements[0];

alert(field.form===form) ----检查form属性的值

field.focus(); ---将焦点设置到当前字段

form.disable=true; ----禁用当前字段

7、共有的表单字段方法:focus()以及blur()

1)     focus():将浏览器的焦点设置到表单字段,激活表单字段,使其可以响应键盘事件

eg:页面加载完毕,将焦点移动表单中的第一个字段

EventUtil.addHandler(window,"load",function(event){

document.forms[0].elements[0].focus();

});

Html5为表单元素添加一个autofocus属性,是个布尔值(在支持的浏览器中是true),在支持该属性的浏览器中,会自动将焦点移动到相应字段<input type="text" autofocus>;

2)     blur()是将焦点从元素中移走

8、共有的表单字段事件:blur,focus,change(对于input以及textarea元素,失去焦点且value值改变的时候触发,对于select元素,在其选项改变的时候触发)

9、文本框脚本:

1)     输入不能超过50个字符,能够显示25个字符:

<input type="text" size="25" maxlength="50" value="aaaa">

2)     不能在textarea中指定最大的字符数

<textarea rows="25" cols="5">aaaa</textarea>

3)     select()用于选择文本框中的所有文本,不接受参数,可以在任何时候被调用

var textbox=document.forms[0].elements["textbox1"];

textbox.select();

4)     select事件:

selectionStart,selectionEnd:保存的是基于0的数值,表示文本的范围

function getSelectText(textbox){

return textbox.value.substring(textbox.selectionStart,textbox.selectionEnd)

}

5)     选择部分文本:setSelectionRange()方法

接收两个参数:第一字符的索引,最后一个字符的索引,在IE8以及之前的版本中,不支持这种方法

10、过滤输入:

1)     屏蔽字符

Eg:只允许用户输入数值:

EventUtil.addHandler(textbox,"keypress",function(event){

event=EventUtil.getEvent(event);

var target=EventUtil.getTarget(event);

var charCode=EventUtil.getCharCode(event);

//跨浏览器取得字符编码

if(!/\d/.test(String.fromCharCode(charCode)) && !event.ctrlKey){

// String.fromCharCode(charCode))将字符编码转化为字符串

EventUtil.preventDefault(event);

}

})

2)     操作剪贴板

beforecopy—发生在复制操作前触发;

copy

beforecut:

cut

beforepaste:

paste

clipboardData对象(访问剪贴板中的数据)的3个方法:getData(数据类型);setData(数据类型,要放至剪贴板的文本);clearData()

11、自动切换焦点:

<input type="text" name="tel1" id="textTel1" maxlength="3">

<input type="text" name="tel2" id="textTel2" maxlength="3">

<input type="text" name="tel3" id="textTel3" maxlength="4">

Js:

(function(){

function tabForward(event){

event=EventUtil.getEvent(event);

var target=EventUtil.getTarget(event);

if(target.value.length==target.maxlength){

var form=target.form;

for(var i=0,len=form.elements.length;i<len;i++){

if(form.elements[i]==target){

form.elements[i+1].focus()

}

return;

}

}

}

var textbox1=document.getElementById("textTel1");

var textbox2=document.getElementById("textTel2");

var textbox3=document.getElementById("textTel3");

EventUtil.addHandler(textbox1,"keyup",tabForward);

EventUtil.addHandler(textbox2,"keyup",tabForward);

EventUtil.addHandler(textbox3,"keyup",tabForward);

})()

12、HTML约束:

1)     必填字段:required

2)     数值范围:min,max,step(最大最小两个刻度之间的差值)

<input type="number" min="0" max="100" step="5" name="count">

//用户只能输入0-100之间的值,并且是5的倍数

stepUp();  //默认值是1,加1;

stepDown(); //默认值是1,减1;

stepDown(5); //减5

3)     输入模式:pattern---正则表达式

<input type="number" name="count" pattern=”\d+”>--输入数值

4)     检测有效性

  1. checkValidity()

if(document.forms[0].elements[0].checkValidity()){

//字段有效继续

}else{

//字段无效

}

  1. validity属性告诉你字段有效还是无效

if(input.validity && input.validity.valid){

if(input.validity.valueMissing){

alert("please add us")

}else if(input.validity.typeMismatch){

alert("sssss")

}

}

5)     禁用验证:novalidate

13、选择框脚本---select,option

add(new,rel);---添加option选项,位置在rel之前

multiple---布尔值

remove(index)

selectIndex:--基于0的选中项索引,如果没有选中项,则值为-1,对于多选控件,只保存第一项的索引

size---选择框中可见的行数

操作选项:

var selectbox=document.forms[0].elements["location"];

var text=selectbox.options[0].text;

var value=selectbox.options[0].value;

1)     选择选项:selectedIndex属性

单选:

var selectedOption=selectbox.options[selectbox.selectedIndex];

var selectedIndex=selectbox.selectedIndex;

var selectedOption=selectbox.options[selectedIndex];

alert("selected index:" + selectedIndex+ "\nSelected text:" + selectedOption.text+"\nSelected value:" +selectedOption.value);

多选:

function getSelectedOptions(selectbox){

var result=new Array();

var option=null;

for(var i=0,len=selectbox.options.length;i<len;i++){

option=selectbox.options[1];

if(option.selected){

result.push(option);

}

}

return result;

}

2)     添加选项:

第一种:

var newOption=new Option("option text","Option value");

selectbox.add(newOption,undefined);

第二种:

appendChild()

3)     移动:

var selectbox1=document.getElementById("selLocations1");

var selectbox2=document.getElementById("selLocations2");

selectbox2.appendChild(selectbox1.options[0]);

//appendChild()方法传入一个文档已有的元素,就会从父节点中移除它,再将它添加到指定位置

重排:

var optionToMove=selectbox.options[1];

selectbox.insertBefore(optionToMove,selectbox.options[optionToMove.index-1])

14、富文本编辑:

1)     使用contenteditable属性:true-打开;false-关闭;inherit—继承

<div class="editable" id="richedit" contenteditable></div>

var div=document.getElementById("richedit");

div.contentEditable="true";

js-DOM2,表单脚本的更多相关文章

  1. 表单脚本api_contenteditable

    <html> <head></head> <body> <form> <div contenteditable>ssadas&l ...

  2. js验证表单大全

    js验证表单大全 1. 长度限制 <script> function test() { if(document.a.b.value.length>50) { alert(" ...

  3. JavaScript高级程序设计第14章表单脚本 (学习笔记)

    第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...

  4. JS 更改表单的提交时间和Input file的样式

    JS转换时间 function renderTime(data) { var da = eval('new ' + data.replace('/', '', 'g').replace('/', '' ...

  5. JavaScript基础笔记(十)表单脚本

    表单脚本 一.表单基础知识 JavaScript中表单对应的是HTMLFormElement类型,该类型继承自HTMLElement类型. 通过document.forms可以获得所有表单元素,通过数 ...

  6. js动态控制表单表格

    js动态控制表单表格,这里操作只讲,添加一行,删除一行,删除某一行某一列. 直接放代码: <!DOCTYPE html> <html> <head> <met ...

  7. jquery.form.js 让表单提交更优雅

    jquery.form.js 让表单提交更优雅.可以页面不刷新提交表单,比jQuery的ajax提交要功能强大. 1.引入 <script src="/src/jquery-1.9.1 ...

  8. Vue.js:表单

    ylbtech-Vue.js:表单 1.返回顶部 1. Vue.js 表单 这节我们为大家介绍 Vue.js 表单上的应用. 你可以用 v-model 指令在表单控件元素上创建双向数据绑定. v-mo ...

  9. 利用JS提交表单的几种方法和验证(必看篇)

    第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <scr ...

随机推荐

  1. jquery-validation-1.13.1 自定义验证正则

    /*** check Mobile***********************/ jQuery.validator.addMethod("isMobile", function( ...

  2. IOS-01零碎知识总结

    1. 变量的@public @private @package @protected 声明有什么含义? @public  可以被所有的类访问 @private  只有该类的方法可以访问,子类的都不能访 ...

  3. Hibernate单向一对多对象关系模型映射

    1 hibernate 的对象关系映射 Orm: 类-----表 属性------字段 对象------记录 表:在数据库中存在主外键的关系,反向工厂类是由表生成,在由表生成类的时候,类和类之间存在者 ...

  4. 定时器(NSTimer)

    iOS中定时器NSTimer的使用 1.初始化 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget sel ...

  5. August 12th 2016 Week 33rd Friday

    Everything is good in its season. 万物逢时皆美好. Every dog has its day. You are not in your best condition ...

  6. IE11 的区别

    http://msdn.microsoft.com/zh-tw/visualc/bg182625

  7. MyBatis魔法堂:即学即用篇

    一.前言                   本篇内容以理解MyBatis的基本用法和快速在项目中实践为目的,遵循Make it work,better and excellent原则. 技术栈为My ...

  8. 无废话Android之内容观察者ContentObserver、获取和保存系统的联系人信息、网络图片查看器、网络html查看器、使用异步框架Android-Async-Http(4)

    1.内容观察者ContentObserver 如果ContentProvider的访问者需要知道ContentProvider中的数据发生了变化,可以在ContentProvider 发生数据变化时调 ...

  9. Delphi中的异常处理

    转载:http://www.cnblogs.com/doit8791/archive/2012/05/08/2489471.html 以前写Delphi程序一直不注意异常处理,对其异常处理的机制总是一 ...

  10. freemarker 实现对URL的安全编码

    [#setting url_escaping_charset='utf-8'] ${yourstr?url}