JavaScript处理HTML DOM
本来只想好好写一篇博文,最后弄到好像重构一样了,越做越不满意,先这样吧:)
document.getElementById(id)
document.getElementsByTagName(name)
Object Collections: x.elements[index]+
x为以下元素:document.anchors、document.body、document.documentElement、document.embeds、documen.forms、document.head、document.images、document.links、document.scripts、document.title。只对特定元素,如document.forms的elements只获取表单元素。
document.getElementsByName(name)+
[lte IE 9]将id和name混为一谈,所以要有好习惯,id和name用相同名字
document.allOnly [IE]
document.querySelector()[gte IE 8]
document.querySelectorAll()[gte IE 8]+
不把文本节点算进
document.getElementsByClassName(class)[gte IE 9]+
参数为"*"时返回全部
document.firstElementChild()[gte IE 9]+
不把文本节点算进来
document.lastElementChild()[gte IE 9]+
不把文本节点算进来
document.nextElementSibling()[gte IE 9]+
不把文本节点算进来
document.previousElementSibling()[gte IE 9]+
不把文本节点算进来
document.childElementCount()[gte IE 9]+
不把文本节点算进来,子节点个数
element.innerHTML
element.attributeName
element.setAttribute(attr, value)
element.getAttribute()
element.removeAttribute()
element.style.propertyName
element.innerText+
FF不支持,其他支持,IE引入,为空时返回""
element.textContent+
[lte IE 8]不支持,其他支持,FF引入,注意,相比innerText,这个会保留前后空格,如换行等造成的空格,为空时返回undefined
document.createElement()
document.createComment()
document.createAttribute()
document.createTextNode()
document.createDocumentFragment()
document.removeChild()+
返回被删除元素
document.appendChild()
document.replaceChild()+
返回被替换元素
parentElement.insertBefore(new, old)
cloneNode()+
?
hasChildNodes()
document.write()+
注意文档加载完毕后使用会重写整个文档
element.onclick = function(){ code }
element.addEventListener("click", funcName[, useCapture])+
useCapture设置使用bubbleing(true)或者capturing(false),前者事件触发由里到外,后者则由外到里,如果要在方法里传参数需要这样定义:function(){ funcName(a, b); },笔者试过若直接写funcName(a, b),加载时这个方法会执行一次的,相比onclick=的方法,这个可以给一个事件定义多个监听器 - [gte IE 9]
element.removeEventListener(xx,funcName)[gte IE 9]
element.attachEvent(xx, funcName)Only [IE]+
注意要带"on"
element.detachEvent(xx, funcName)Only [IE]+
注意要带"on"
Level 1:
document.anchors
document.applets
document.body
document.cookie
document.domain
document.forms
document.images
document.links - area/ a带href
document.referrer
document.title
document.URL
Level 3:
document.baseURI
document.doctype
document.documentElement - html
document.documentMode
document.documentURI
document.domConfig
document.embeds
document.head
document.implementation
document.inputEncoding
document.lastModified
document.readyState
document.scripts
document.strictErrorChecking
document.location - 与window.location指向同一个Location对象
attributes+
如该节点为Element,以NameNodeMap形式返回该元素属性
nodeName
nodeType
nodeValue
parentNode
childNodes+
以NodeList形式返回
firstChild
lastChild
nextSibling
previousSibling
Node.ELEMENT_NODE - 1
Node.TEXT_NODE - 3
Node.DOCUMENT_NODE - 9
Node.DOCUMENT_FRAGMENT_NODE - 11
Node.ATTRIBUTE_NODE - 2
Node.COMMENT_NODE - 8
一个Node不包括它里面的文字,若要获取文字:innerHTML或者firstChild.nodeValue
TextNode的NodeValue是它本身
nodeName约等于tagName,特别地:文字#text,#document,attributeNode
nodeType:Element(1),Attribute(2),Text(3),Comment(8),Document(9)
由于历史原因document.id/ document.forms[images/links].id可以获取元素
NodeList和ObjectCollections具有实时性,不会获取一次后就固定不动的
NodeList是个Array-like对象,可用NodeList.length获取个数
document object is your web page.
W3C DOM 包括 Core DOM,XML DOM,HTML DOM
ownerDocument - ?
因为有些CSS属性和JS的保留字冲突,各种浏览器有不同的获取方式,例如:style.styleFloat - [lte IE 8],style.cssFloat - [gte IE 9]和FF等
getAtribute("className")[lte IE 7]
getAttribute("class") - FF
getAttribute("htmlFor")[lte IE 7]
getAttribute("for") - FF
- 一些题外小笔记:
- IE支持[]和()访问,FF支持[]访问,所以大家都用[]访问NodeList中的元素
- FF不支持给元素宽高直接赋数字值,导致大家在赋值给元素宽高时都要用这样的形式width=h+"px"
- [lte IE 8]getYear取到的是实际年份,现代浏览器获取到的是年份减去1990
JavaScript处理HTML DOM的更多相关文章
- 借助JavaScript中的Dom属性改变Html中Table边框的颜色
借助JavaScript中的Dom属性改变Html中Table边框的颜色 -------------------- <html> <head> <title>我是页 ...
- JavaScript 节点操作Dom属性和方法(转)
JavaScript 节点操作Dom属性和方法 一些常用的dom属性和方法,列出来作为手册用. 属性: 1.Attributes 存储节点的属性列表(只读) 2.childNodes 存储 ...
- javascript系列之DOM(一)
原文:javascript系列之DOM(一) DOM(document object moudle),文档对象模型.它是一个中立于语言的应用程序接口(API),允许程序访问并修改文档的结构,内容和样式 ...
- javascript系列之DOM(二)
原文:javascript系列之DOM(二) 原生DOM扩展 我们接着第一部分来说,上文提到了两种常规的DOM操作:创建文档片段和遍历元素节点.我们知道那些雨后春笋般的库,有很大一部分工作就是提供了一 ...
- javascript系列之DOM(三)---事件
原文:javascript系列之DOM(三)---事件 事件是javascript跳动的心脏,是DOM所有成分结合的万金油.当我们在WEB 上进行某些交互时,事件也就发生了.点击某些内容,鼠标经过特定 ...
- JQuery $ $.extend(),$.fn和$.fn.extend javaScript对象、DOM对象和jQuery对象及转换 工具方法(utility)
一.为什么jquery前面要写$ Javascript没有package的概念,而作者又希望所有jQuery相关的API都能通过一个全局性的对象来容纳. 名为jQuery的全局变量就是这样一个对象,不 ...
- javascript中获取dom元素的高度和宽度
javascript中获取dom元素高度和宽度的方法如下: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网 ...
- JavaScript和HTML DOM的区别与联系
JavaScript和HTML DOM的区别与联系 区别: javascript JavaScript 是因特网上最流行的浏览器脚本语言.很容易使用!你一定会喜欢它的! JavaScript 被数百万 ...
- console.time 简单分析javascript动态加入Dom节点的性能
Bullshit 本来想每天都更新下博客的,可是近期要考试,还有就是自己还是停留在暗自窃喜中吧(这样的想法要改变). 事实上近期总在想.自己要怎么去管理自己的数据,每天的生活都是对自己的数据的增删查改 ...
随机推荐
- F - The Circumference of the Circle
Description To calculate the circumference of a circle seems to be an easy task - provided you know ...
- 网易云数据结构- Maximum Subsequence Sum
题目 题目地址 思路 显然是最大子列和的进化版,那就先思考下经典的最大子列和.这也是道思维题,啥算法也没用到,全是思维技巧,真心不知道考试遇到这种题该怎么办了. 存放答案的一个类,我把它看成一个袋子, ...
- view import symbols
nm -D [file]|grep -w U or objdump -T [file]|grep "*UND*"
- Java通过axis调用.NET WebService
前面已经记录过通过axis调用webservice,昨天在对接.NET接口时,发现在传递参数时和一般的传参方法是不一样的,在接口方哥们的帮助下解决了.哈哈. import java.net.URL; ...
- Java三大特征之多态(三)
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- 智能电视TV开发---如何实现程序省电
对于很多使用智能手机的用户来,很多抱怨手机耗电太快,很多人买手机的时候卖家都是推荐买两块电池,还有如果用户留心的话,在买手机的网页上,卖家会显示播放视频多长时间,听音乐多长时间,待机多长时间,不过看的 ...
- 京东UED招聘web前端开发工程师(中/高级)
工作职责: 负责前端界面的构建和各类交互设计与实现: 前端样式和脚本的模块设计及优化: 协同后台开发人员完成项目: 负责新产品开发线前端工作(新产品.垂直站.移动端 .后端系统),可根据个人喜好及特长 ...
- oracle 集合定义
集合:是具有相同定义的元素的聚合.Oracle有两种类型的集合: 可变长数组(VARRAY):可以有任意数量的元素,但必须预先定义限制值. 嵌套表:视为表中之表,可以有任意数量的元素,不需要预先定义限 ...
- 使用notepad++学习python爬虫,print网页中文乱码问题
今天学习使用python爬虫的时候发现爬到的网页中文会乱码,一直网上搜索解决办法,一个一个试验过去,发现还是乱码,然后我就开始使用其它方法测试,用python自带的编辑器打开是正常的,发现是notep ...
- Spring中IoC - 两种ApplicationContext加载Bean的配置
说明:Spring IoC其实就是在Service的实现中定义了一些以来的策略类,这些策略类不是通过 初始化.Setter.工厂方法来确定的.而是通过一个叫做上下文的(ApplicationConte ...