公司内部的一篇关于dom方法的分享
第一部分 dom
node类型
nodeType 属性
nodeType 属性返回节点的类型。nodeType 是只读的。
比较重要的节点类型有:
元素类型 |
NodeType |
元素 |
1 |
属性 |
2 |
文本 |
3 |
注释 |
8 |
文档 |
9 |
if (someNode.nodeType == 1) { //适用于所有浏览器
...
}
nodeName 属性
nodeName 属性规定节点的名称。
- nodeName 是只读的
- 元素节点的 nodeName 与标签名相同
- 属性节点的 nodeName 与属性名相同
- 文本节点的 nodeName 始终是 #text
- 文档节点的 nodeName 始终是 #document
注释:nodeName 始终包含 HTML 元素的大写字母标签名。
if (someNode.nodeType == 1) {
value = someNode.nodeName //nodeName的值是元素的标签名
}
nodeValue 属性
nodeValue 属性规定节点的值。
- 元素节点的 nodeValue 是 undefined 或 null
- 文本节点的 nodeValue 是文本本身
- 属性节点的 nodeValue 是属性值
每个节点都有一个childNodes属性,其中保存着一个NodeList对象。(NodeList是一个类数组对象,不是Array的实例)
someNode.firstChild =someNode.childNodes[0] = someNode.childNodes.item(0)
someNode.lastChild = someNode.childNodes[someNode.childNodes.length-1]
hasChildNodes() //检测有没有子节点
var returnNode = someNode.appendChild(someNode.firstChild) //在第一个子节点后append
insertBefore(newNode, null) //和append()方法一致
insertBefore(newNode, someNode.firstChild) //在特定位置添加节点
replaceChild(newNode, someNode.firstChild) //替换节点
removeChild(someNode.firstChild) //移除节点
replaceChild(newNode, someNode.childNodes[someNode.length-2]) //删除倒数第二个元素
cloneNode() //接收一个参数,true(为深复制,复制节点以及子节点树),false(只复制节点本身)
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
var deepList =mylist.cloneNode(true)
console.log(deepList.childNodes.length) //3(ie<9) 或7(其他浏览器)
[text, li, text, li, text, li, text]
console.log(deepList.children.length) //3
[li, li, li]
console.log(deepList.childNodes.length) //
var shallowList =mylist.cloneNode(false)
console.log(shallowList .childNodes.length) //0
IE9之前的版本不会为空白符创建节点,cloneNode()方法不会复制dom节点的javascript属性,例如事件处理,但ie有bug,建议复制前移除事件
Document类型
var allElements = document.getElementByTagName("*") //所有元素
document.forms document.images
document.links //带有href特性的<a>元素
Element类型
1.HTML元素
var div= document.getElementById("myDiv")
console.log(div.id)
console.log(div.className)
console.log(div.title)
console.log(div.dir)
2.取得特性
getAttribute() setAttribute() removeAttribute()
<div id="myDiv" align="left" my_special_attribute="hello!"
console.log(div.my_special_attribute) //undefined (ie除外)
div.mycolor = "red"
console.log(div.getAttribute("mycolor")) //null (ie除外)
DOM扩展
选择符
querySelector() querySelectorAll() //ie8+
matchesSelector() //接受参数,css选择符,如果调用元素与该选择符匹配,返回true,否则,返回false p288页
与类相关的扩充
getElementsByClassName() //ie9+ 在document对象上调用始终会返回与类匹配的所有元素,在元素上调用改方法只会返回后代元素中匹配的元素
//删除"disabled"类
div.classList.remove("disabled")
//添加"current"类
div.classList.add("current")
//切换"user"类
div.classList.toggle("current")
//确定元素中是否包含既定类名
if (div.classList.contains("bd"))
Firefox 3.6+和Chrome
location修改URL的方法
初始url为http://www.baidu.com/wechart/
将url修改为 http://www.baidu.com/#section1
location.hash = "#section1";
将url修改为 http://www.baidu.com/wechart/?q=javascript
location.search= "?q=javascript";
将url修改为 http://www.yahoo.com/wechart/
location.hostname= "www.yahoo.com";
将url修改为 http://www.yahoo.com/mydir/
location.pathname= "mydir";
将url修改为 http://www.yahoo.com:8080//wechart
location.port = 8080;
公司内部的一篇关于dom方法的分享的更多相关文章
- 公司内部培训SQL Server传统索引结构PPT分享
公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E ...
- .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器
使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言 Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...
- 关于公司内部的Nuget服务
简介 公司内部搭建的Nuget服务,私有安全,局域网,速度快. 使用方法 VS -> 工具 -> 库程序包管理器 -> 程序包管理器设置 -> 程序包源 -> 新增以下配 ...
- before(),after(),prepend(),append()等新DOM方法简介
一.DOM API也在不断升级 web前端标准一直在不断升级,比方说,说了很多年的HTML5.CSS3,以及天天见的ES6. 然后,似乎就没有然后了.实际上,除了HTML5/CSS3/ES6+,关于D ...
- Rafy 领域实体框架 - 公司内部培训视频
本月给公司内部一个项目做架构重构,其中使用到了 Rafy 框架.所以我培训了 Rafy 领域实体框架的使用方法,过程中录制了视频,方便其他同事查看.现在把视频放到园里来分享下,有兴趣的朋友可以看看,有 ...
- ASP.NET MVC学前篇之扩展方法、链式编程
ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的 ...
- 深入理解javascript函数系列第三篇——属性和方法
× 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...
- 使用mvvm框架avalon开发公司内部运营管理系统的一些心得
接触avalon差不多有一年时间了,当时是看前端大牛司徒正美的博客才了解到还有这么一个高大上的玩意,然后就加入了avalon的讨论群.从群里零零散散的了解了avalon的一些特性,感觉很强大,感觉思想 ...
随机推荐
- 仿h5拖拽
在h5中有个拖拽的声明式命令,就如html属性一样,简单强大. 而在网页上拖拽的功能还是需求很大的,所以对这方面应该去仔细了解一下. 所以仿一一下它的实现.只是仿了它的复制一份到目标容器的功能.它还有 ...
- Windows phone重写返回键
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) {//需要设置这个属性 e.Cancel ...
- 深入理解DOM事件类型系列第三篇——变动事件
× 目录 [1]删除节点 [2]插入节点 [3]特性节点[4]文本节点 前面的话 变动(mutation)事件能在DOM中的某一部分发生变化时给出提示,这类事件非常有用,但都只能使用DOM2级事件处理 ...
- 【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- C++ 与 php 的交互 之----- C++ 异步获取 网页文字内容,异步获取 php 的 echo 值。
已搬迁至 http://www.cnblogs.com/linguanh/p/4543836.html
- Linux添加用户(user)到用户组(group)
将一个用户添加到用户组中,千万不能直接用: usermod -G groupA 这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员. 应该用 加上 -a 选项: usermod - ...
- mouseenter以及mouseleave兼容性
在IE的全系列中都实现了mouseenter和mouseleave事件,但是在早期的w3c浏览器中却没有实现这两个事件.有时候,我们需要使用 mouseenter事件来防止子元素的冒泡,这就涉及到事件 ...
- 1Z0-053 争议题目解析175
1Z0-053 争议题目解析175 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 175.You are peer reviewing a fellow DBAs backup p ...
- Sybase数据库,普通表修改分区表步骤
本文目标:指导项目侧人员再遇到此类改动需求时可以自己参照更改.需求:Sybase数据库,普通表t_jingyu修改为按天分区的分区表. 1.sp_help查看t_jingyu的表结构,索引等信息 sp ...
- Bootstrap Navbar应用及源码解析
目的: 用Bootstrap Navbar component 实现一个响应式导航 理解Bootstrap Navbar component是如何工作的(不包括collepse.js) 清楚自己添加一 ...