公司内部的一篇关于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的一些特性,感觉很强大,感觉思想 ...
随机推荐
- HTML5的实用
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #ffffff } p.p2 ...
- Utility3:Understand Dashboard Report
To see data in the SQL Server Utility dashboard, select the top node in the Utility Explorer tree - ...
- javascript运动系列第五篇——缓冲运动和弹性运动
× 目录 [1]缓冲运动 [2]弹性运动 [3]距离分析[4]步长分析[5]弹性过界[6]弹性菜单[7]弹性拖拽 前面的话 缓冲运动指的是减速运动,减速到0的时候,元素正好停在目标点.而弹性运动同样是 ...
- BFC之宽度自适应布局篇
说到自适应布局,我们曾在“抛砖引玉之宽度自适应布局”一文中学习过.当时的核心思想主要是利用float+margin的形式.利用块状元素的流体特性,然后计算出float元素的宽度,并赋予到块状元素的相应 ...
- 使用ikmv将jar转换为dll,在.NET中直接调用
ikmv百科介绍 ikvm官网 使用ikvm前需要先安装java. ikvm的使用比较简单,到官网下载ikvm需要的组件,解压后在path中配置 %IKVM_HOME%\bin 在cmd中使用命令 i ...
- DDD 主题交流会总结及计划
思维碰撞才能更加进步 2015年5月16日(上周六),我们举行了一次 DDD 主题的交流会,参会者主要是 ENode 群友.以及部分园友,为什么要搞这次交流会?原因很简单,就是希望可以提供对 DDD ...
- geotrellis使用(三)geotrellis数据处理过程分析
之前简单介绍了geotrellis的工作过程以及一个简单的demo,最近在此demo的基础上实现了SRTM DEM数据的实时分析以及高程实时处理,下面我就以我实现的上述功能为例,简单介绍一下geotr ...
- geotrellis使用(十一)实现空间数据库栅格化以及根据属性字段进行赋值
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 安装空间数据库 空间数据库栅格化 根据属性字段进行赋 ...
- log4net 记录MVC监控日志
由于MVC自身的特点,可以让我们记录每一个Controller下Action的执行时间以及View视图渲染完成的时间,本文采用log4net记录MVC每个Action的执行时间和View视图渲染完成时 ...
- 如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程
使用PHP进行文件上传,主要使用到表单功能和PHP内置的$_FILES函数功能.接下来我们看如何实现PHP上传功能.例子效果图,此例子是在Mac下进行调试成功的. PHP上传图片文件的功能代码如下: ...