读js DOM编程艺术总结
阅读原文时间:2023年07月08日阅读:1

第一章主要介绍一些历史性问题,javascript是Netcape和sun公司合作开发的。

第二章JavaScript语法:

  1,数据类型:(弱类型)字符串,数值,布尔值(只有true和false,不是字符串)数组,对象

  2,函数:

  3,对象:(属性和方法),包括内建对象,自定义对象还有浏览器提供的预定义的宿主对象(Form,Image,Element)

第三章DOM:

  1,D(document)O(object)M(model)文档对象模型

  2,节点分为,元素节点,文本节点,属性节点。

  3,获取元素方法:getElementById(id),getElementsByTagName(tag),getElementsByClassName(class)

  一般浏览器不支持getElementsByClassName,自定义函数(1)。

  4,获取和设置属性:getAttribute(attribute),setAttribute(“attribute”,“value”)使用setAttribute做出的修改并不会改变页面的源代码

第四五六章图片库实例

  1,childNodes属性用来获取任何一个元素的所有子元素

  2,node.nodeType属性用来获取节点的属性,其中元素节点属性值1,属性节点属性值2,文本节点属性值3.

  3,node.nodeValue属性用来得到一个节点的值

  4,node.firstChild,node.lastChild属性返回父节点的第一个和最后一个子元素

  5,为了保证可访问性,要求做到平稳退化,分离出javascript,向后兼容,性能考虑

第七章动态创建标记

  1,doument.write()直接将字符串插入到文档里,不推荐使用

  2,innerHTML 用来读写给定元素里的HTML内容,包括标签名一同。不推荐使用

  3,doucment.createElement() 创建新的元素节点

  4,document.createTextNode() 创建新的文本节点,一般附加到元素节点后面

  5,appendChild(),用法为parent.appendChild(child)

  6,parentElement.insertBefore(newElement,targetElement) 在已知元素前面添加新的元素,不存在insertAfter()函数需要自己构建

  7,parentNode,返回父亲节点

  8,nextSibing,返回下一个兄弟节点

  9,Ajax主要优势就是对页面的请求以异步的方式发送到服务器,做到只更新页面中的一小部分,核心技术是XMLHttpRequest对象,包括getHTTPObject.js和  getNewContent.js两个脚本,readyState的属性值有0表示未初始化,1表示正在加载,2表示加载完毕,3表示正在交互,4表示完成

第八章充实文档的内容

  1,给文档创建缩略语函数displayAbbrreviations

  abbr标签显示缩略语,title属性给出全名

  2,给文档的文献来源连接表displayCitations

  blockquote标签块引用,cite属性给一个来源URL地址

  3,给文档显示快捷键清单displayAccesskeys

  accesskey属性把一个元素(链接)与键盘上的某个特定按键关联一起,1对应返回到本网站主页,2对应后退到前一页面,4打开本网站的搜索表单,9对应本网   站联系方法,0对应查看本网站的快捷键清单

第九章CSS-DOM

  1,结构层(HTML),表示层(css),行为层(Javascript)

  2,Style属性是一个对象,只能返回内嵌样式,设置样式必须使用引号,是一个字符串

  3,className属性,自定义addClass函数

第十章用javascript实现动画

  1,setTimeout(“function”,interval)能够让某函数在经过一段预定时间(毫秒为单位)之后才开始执行

  clearTimeout(variable)清除时间函数,variable保存着某个setTimeout函数调用返回值的变量

  2,parseInt(),获取字符串中的数字

  3,css中overflow属性用来处理一个元素的尺寸超出其容器尺寸的情况,visible表示不裁剪溢出的内容,hidden隐藏溢出的内容,scroll隐藏但显示一个进度   条,auto溢出时显示滚动条,不溢出时不显示

  4,moveElement函数实例

第十一章HTML5简介

第十二章javascript实例

  1,使用Modernizr库,包含在header标签中

  2,多个css文件导入到一个基本的样式表中更方便@import url(layout.css);

  3,页面突出显示函数highlightPage函数,为每个页面的body添加不用的id

  4,内部导航showSection函数

  5,图片库函数showPic函数

  6,label标签,一般用于输入框前的文本提示,当点击label标签中的文本时,关联的表单字段就会获得焦点,for属性同之后输入框中的id,自定义函数

  7,form对象 ,可以用form.element.length返回表单中的包含的表单元素个数,childNodes返回所有子节点

  8,HTML5中支持placeholder属性,对于不支持此属性的浏览器自定义函数

  9,表单验证函数

  10,提交表单应用到Ajax技术,

附录el_1:按类名查找方法

function getElementsByClassName(node,classname){   if(node.getElementsByClassName){     return node.getElementsByClassName(classname);   }else{     var results = new Array();     var elems = node.getElementsByTagName("*");     for(var i=0;i final_x){   dist = Math.ceil((xpos - final_x) / 10);   xpos = xpos - final_x;   }   if(ypos < final_y){   dist = Math.ceil((final_y - ypos) / 10);   ypos = final_y - ypos;   }   if(ypos > final_y){   dist = Math.ceil((ypos - fianl_y) /10 );   ypos = ypos - fianl_y;   }   elem.style.left = xpos + "px";   elem.style.top = ypos + "px";   var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";   elem.movement = setTiemout(repeat,interval); } el_11:页面突出显示函数 function highlightPage(href){   if(!document.getElementsByTagName) return false;   if(!document.getElementById) return false;     var headers = document.getElementsByTagName(‘header’);   if(headers.length == 0) return false;   var navs = header[0].getElemntsByTagName("nav");   if(navs.length == 0) return false;   var links = navs[0].getElementsByTagName("a");   var linkurl;   for(var i=0;i([\s\S])<\/article>/);         if(matches.length > 0){           thetarget.innerHTML = matcher[1];         }else{         thetarget.innerHTML ='

Oops,there was an error.Sorry

';         }       }else{       thetarget.innerHTML = '

'+request.statusText+'

';       }     }   };   request.send(data);   return true; } function prepareForms(){   for(var i=0;i