公司内部的一篇关于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的一些特性,感觉很强大,感觉思想 ...
随机推荐
- 【Win 10 应用开发】RTM版的UAP项目解剖
Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载.正式版的SDK在API结构上和以前预览的时候是一样的,只是版本变成10240罢了,所以大家 ...
- ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(3)修改资料、修改密码
在上一篇博客中实现了用户的注销和登录,其实代码里落了点东西,就是用户登录要更新最后一次登录时间和登录IP,这次补上.今天做修改资料和修改密码,TryUpdateModel是新用到的东西. 目录: AS ...
- windows下实现Git在局域网使用
1.首先在主机A上创建一个文件夹用于存放你要公开的版本库.然后进入这个文件夹,右键->Git create repository here,弹出的窗口中勾选Make it Bare!之后将这个文 ...
- 【彩票】彩票预测算法(一):离散型马尔可夫链模型C#实现
前言:彩票是一个坑,千万不要往里面跳.任何预测彩票的方法都不可能100%,都只能说比你盲目去买要多那么一些机会而已. 已经3个月没写博客了,因为业余时间一直在研究彩票,发现还是有很多乐趣,偶尔买买,娱 ...
- Util应用程序框架公共操作类(九):Lambda表达式扩展
上一篇对Lambda表达式公共操作类进行了一些增强,本篇使用扩展方法对Lambda表达式进行扩展. 修改Util项目的Extensions.Expression.cs文件,代码如下. using Sy ...
- 【基础进阶】URL详解与URL编码
作为前端,每日与 URL 打交道是必不可少的.但是也许每天只是单纯的用,对其只是一知半解,随着工作的展开,我发现在日常抓包调试,接口调用,浏览器兼容等许多方面,不深入去理解URL与URL编码则会踩到很 ...
- Android随笔之——Android ADB详解
ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备.它主要有以下几个功能: 1.运 ...
- eclipse导入项目Archive for required library cannot be read or is not a valid ZIP file
原因 :部分文件毁坏. 解决办法:1. 在eclipse中运行maven clean install 2. 报错,找到报错的文件物理删除,然后重新运行maven clean install 3. 循 ...
- Hibernate之加载策略(延迟加载与即时加载)和抓取策略(fetch)
假设现在有Book和Category两张表,表的关系为双向的一对多,表结构如下: 假设现在我想查询id为2的那本书的书名,使用session.get(...)方法: Session session=H ...
- DX9入门笔记1-D3D初始化
对3D编程期待已久,却一直叶公好龙浅尝辄止.近期在公司实习却无具体的工作安排,琢磨着学习个新的手艺,就又想起了3D Programming.这次从大名鼎鼎的龙书(Introduction to 3D ...