js原生API----查找dom
一、祖先接口Node,及他的扩展接口EventTarget
Node是一个接口,许多DOM类型从这个接口继承,并允许类似地处理(或测试)这些各种类型。
以下接口都从Node继承其方法和属性:
Document, Element, CharacterData (which Text, Comment, and CDATASection inherit), ProcessingInstruction, DocumentFragment, DocumentType, Notation, Entity, EntityReference
在方法和属性不相关的特定情况下,这些接口可能返回null。它们可能会抛出异常 - 例如,当将子节点添加到没有子节点的节点类型时。
EventTarget 是一个由可以接收事件的对象实现的接口,并且可以为它们创建侦听器。
Element,document 和 window 是最常见的事件目标,但是其他对象也可以是事件目标,比如XMLHttpRequest,AudioNode,AudioContext 等等。
许多事件目标(包括元素,文档和 window)还支持通过 on... 属性和属性设置事件处理程序。
二、document接口
Document接口表示在浏览器中加载的任何网页,并作为到网页内容的入口点,这是 DOM 树。 DOM树包括诸如<body> 和 <table>之类的元素,其他等等。其也为文档(document)提供了全局性的函数,例如获取页面的URL、在文档中创建新的 element 的函数。它为文档提供全局的函数,像如何获取页面的URL和在文档中创建新的元素。
Document 接口也继承自 Node 及 EventTarget 接口。
https://developer.mozilla.org/zh-CN/docs/Web/API/Document
三、查找dom API
三种返回形式:HTML,HTMLcollection,HTMLlist
3.1 HTML
document.getElementById 返回html
document.querySelector 返回html 3.2 HTMLcollection
HTMLCollection 是一个接口,表示 HTML 元素的集合,它提供了可以遍历列表的方法和属性。
document.getElementsByClassName 返回HTMLcollection
document.getElementsByTagName 返回HTMLcollection
document.forms等属性
Document (images, applets, links, forms, anchors)
form (elements)
map (areas)
select (options)
table (rows, tBodies)
tableSection (rows)
row (cells)
返回HTMLcollection
document.getElementsByName 返回HTMLlist
document.querySelectorAll 返回HTMLlist
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style>
div{border: 1px solid #000;}
</style>
<body>
<div id="js_id" class="js-class" name='js-name'>
<div>123</div>
</div>
<form action="" name="form2" ></form>
</body>
<script>
// https://developer.mozilla.org/zh-CN/docs/Web/API/Document
// https://developer.mozilla.org/zh-CN/docs/Web/API/Element
/*
Document接口表示在浏览器中加载的任何网页,并作为到网页内容的入口点,这是 DOM 树。
DOM树包括诸如<body> 和 <table>之类的元素,其他等等。其也为文档(document)提供了全局性的函数,例如获取页面的URL、在文档中创建新的 element 的函数。它为文档提供全局的函数,像如何获取页面的URL和在文档中创建新的元素。
*/ // 1、老ie会获得 name
// 2、返回 第一个的html
var js_id=document.getElementById('js_id');
console.log(js_id)
// 类似于jquery $, 但只返回第一个选择器匹配的html IE8+
var js_selector=document.querySelector('#js_id');
console.log(js_selector) // HTMLCollection是一个特殊的NodeList,表示包含了若干元素(元素顺序为文档流中的顺序)的通用集合是element的集合,它是实时更新的
// 返回一个集合 HTMLcollection IE9+
var js_class=document.getElementsByClassName('js-class');
console.log(js_class)
var js_div=document.getElementsByTagName('div')
console.log(js_div)
// dovument.forms 是属性
var js_forms=document.forms
console.log(js_forms) // NodeList 对象是一个节点的集合,
// 返回noteList 是node的集合
var js_name=document.getElementsByName('js-name')
console.log(js_name)
var js_selector_all=document.querySelectorAll('.js-class')
console.log(js_selector_all) // 集合下 寻找 document 是整个html文档 -> html下才能使用 element方法API
console.log(js_id.querySelector('div')) //<div>123</div>
// console.log(js_class.querySelector('div')) error
// console.log(js_name.querySelector('div')) error </script>
</html>
http://blog.csdn.net/hj7jay/article/details/53389522
https://developer.mozilla.org/zh-CN/docs/Web/API
四、在集合内查找dom
1、HTMLcollection下可以使用 ,通过编号或名称索引一个 HTMLCollection 对象,也可以调用 item() 方法和 namedItem() 方法。
| 属性 length | 只读属性,返回指示列表长度的整数(即集合中的元素数)。 |
| [] | 返回集合中 指定index位置的元素,name 属性或 id 属性具有指定值的元素(节点) |
| item() | 返回集合中指定位置的元素(节点)。 |
| namedItem() | 返回集合中 name 属性或 id 属性具有指定值的元素(节点)。 |
<body>
<form action="" name="form_name">
<input type="text" name="text">
<select name="sel" id="sel">
<option value="1">1</option>
<option value="2">3</option>
</select>
</form>
</body>
<script>
// 二级查找在集合内查找 dom
// HTMLcollection [],item,namedItem
var js_forms=document.forms;
console.log(js_forms[0],js_forms['form_name'],js_forms['form1'])
console.log(js_forms.item(0),js_forms.namedItem('form_name')) //得到 相同的html
</script>
2、HTMLcollection下可以使用 ,通过编号一个 HTMLCollection 对象,也可以调用 item() 方法,属性 length
// nodeList
var nodeList=document.querySelectorAll('#form1')
console.log(nodeList[0],nodeList.item(0))
// 配合for 遍历dom
var js_set=document.getElementById('sel')
var x=js_set.childNodes;
for (i=0;i<x.length;i++)
{
document.write(x.item(i).nodeName+x.item(i).nodeType)
document.write("<br />")
}
好好学习,天天向上!!
js原生API----查找dom的更多相关文章
- ES7前端异步玩法:async/await理解 js原生API妙用(一)
ES7前端异步玩法:async/await理解 在最新的ES7(ES2017)中提出的前端异步特性:async.await. 什么是async.await? async顾名思义是“异步”的意思,a ...
- 使用Node.js原生API写一个web服务器
Node.js是JavaScript基础上发展起来的语言,所以前端开发者应该天生就会一点.一般我们会用它来做CLI工具或者Web服务器,做Web服务器也有很多成熟的框架,比如Express和Koa.但 ...
- js原生api之String的slice方法
我们在工作中可能会很少进行这样的思考,对于一些常用的原生api它是如何实现的呢,如果让我们去用js实现一个与原生api功能相同的函数我们该如何设计算法去实现呢? 为了巩固自己的编程技术和提高自己的编程 ...
- js原生API妙用(一)
复制数组 我们都知道数组是引用类型数据.这里使用slice复制一个数组,原数组不受影响. let list1 = [1, 2, 3, 4]; let newList = list1.slice(); ...
- js原生选择class DOM元素
document.querySelector(".demo"); querySelector() 方法返回匹配指定选择器的第一个元素.如果需要返回所有的元素,使用 querySel ...
- jQuery? 回归JavaScript原生API
如今技术日新月异,各类框架库也是层次不穷.即便当年漫山红遍的JQuery(让开发者write less, do more,So Perfect!!)如今也有被替代的大势.但JS原生API写法依旧:并且 ...
- 认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法
(一)认识JQuery JQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一套定义好的方法 JQuery的主旨:以更少的代码,实现更多的功能 (二)JQue ...
- 百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例
百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例 相关说明 1. 界面查看: 吐槽贴:百度地图 api 封装 的实用功能 [源码下载] 2. 功能说明: 百度地图整合功能分享修 ...
- 原生JS和jQuery操作DOM的区别小结
一.Js原生对象和jQuery实例对象的相互转化: (1).原生JS对象转JQ对象: $(DOM对象); (2). JQ对象转原生JS对象: $(DOM对象).get(index); //注意区分eq ...
随机推荐
- 康复计划#1 再探后缀自动机&后缀树
本篇口胡写给我自己这样的东西都忘光的残废选手 以及那些刚学SAM,看了其他的一些东西并且没有完全懵逼的人 (初学者还是先去看有图的教程吧,虽然我的口胡没那么好懂,但是我觉得一些细节还是讲清楚了的) 大 ...
- 怎么写jquery插件
1. 添加js文件到html文件中,放下面的两行到html文档底部,</body>之前. <script src="js/jquery-1.9.1.min.js" ...
- Javascript面对对象. 第五篇
继承 继承是面向对象中一个核心的概念.其他正统面向对象语言都会用两种方式实现继承: 一个是接口实现,一个是继承. 而ECMAScript只支持继承,不支持接口实现,而实现继承的方式依靠原型链完成. / ...
- java_获取多个文件夹下所有.java源码的总行数
import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOExcepti ...
- web及H5 的链接测试
1:先下载一个Xenu工具 2:安装完成之后,进入页面(将弹出框关闭) 3:进行设置(一般不用修改设置) 4:修改完成之后点击工具栏中的file按钮,并输入想要测试的URL地址 5:点击OK测试完成之 ...
- mysql 安装及卸载 主从配置
1.查询rpm -qa | grep mysql* 组件 出现类似安装包 mysql-server-5.1.71-1.el6.x86_64 mysql-libs-5.1.71-1.el6.x86_64 ...
- ABP入门系列(13)——Redis缓存用起来
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 创建任务时我们需要指定分配给谁,Demo中我们使用一个下拉列表用来显示当前系统的所有用 ...
- C++:基础篇-32位和64位系统区别及字节数
今儿面试了一个刚刚毕业的,但是不知道一个int.long.double这几个都是多少位,我给你们总结一下哈: 常用数据类型对应字节数 可用如sizeof(char),sizeof(char*)等得出 ...
- Nginx+IIS+Redis 处理Session共享问题 2
接下来主要说下利用nginx来测试 两台Windows server 1.10.120.131.210 - 端口84部署demo 2.10.120.131.211 - 端口84部署demo ngi ...
- 【js】函数问题
一.函数重载问题: 由于js的函数传入的参数当做arguments对象(和数组类似,但不是Array的实例),传入的参数类型和数量没有限制,没有函数签名,所以如果要实现重载功能 的话,只能是不够完美得 ...