JS操作DOM对象——JS基础知识(四)
一、JavaScript的三个重要组成部分
(1)ECMAScript(欧洲计算机制造商协会)
制定JS的规范
(2)DOM(文档对象模型)重点学习对象
处理网页内容的方法和接口
(3)BOM(浏览器对象模型) 存在兼容性问题
与浏览器进行交互的方法和接口
1、DOM定义
为js操作html元素而制定的规范,DOM树如下图
2、节点
整个文档是一个文档节点
每一个标签是一个元素节点
标签中的文字是一个文字节点
标签中的属性是一个属性节点
3、访问节点的方法
getElementById(); 获取id对应的元素节点 只有他是的返回值是唯一的,也就是说是一个变量,其余返回值全是数组,切记!
getElementsByTagName(); 获取标签数组 例如 :div ul a
getElementsByName(); 获取name对应的元素节点数组
getElementsByClassName();获取class对应的元素节点数组 有兼容性问题,所以我们要自己封装一个获取class类的方法
getElementById().getElementsByClassName(); 获取某个ID下的class数组
getElementById().getElementsByTagName(); 获取某个id下的标签数组
4、封装自己的获取class类的方法
原理:其实就是遍历文档中的所有标签,从这些标签中找到与自己class类一样的类。
兼容性问题:就是getElementsByClassName();有兼容性问题,但是我们在高级浏览器中还是可以用的
代码:
function getClass(classname) {
//如果浏览器支持这个方法,我们还是不要浪费他的高性能,尽量使用
if (document.getElementsByClassName) {
return document.getElementsByClassName(classname);
}
//如果不能支持
var arr = [];
var dom = document.getElementsByTagName("*");
for (var i = 0; i < dom.length; i++) {
var txt = [];
txt = dom[i].className.split(" ");
for (var j = 0; j < txt.length; j++) {
if (txt[j] == classname) {
arr.push(dom[i]);
}
}
}
return arr;
}
5、访问关系(这样的好处是能省去起名的痛苦)
(1)父亲点
<script>
window.onload = function(){
var x = document.getElementById("x");
x.onclick = function(){
this.parentNode.style.display = "none";
//关掉的是他的 父亲 this.parentNode 这种方法还是比较厉害的,能节省一个盒子的id起名
}
}
</script>
(2)兄弟节点
nextSibling 下一个亲兄弟 亲的 IE 678 认识
nextElementSibling 其他浏览器认识的
previousSibling 同理 上一个兄弟
previousElementSibling
(3)子节点(这个容易报错 不怎么用)
firstChild 第一个孩子 ie678
firstElementChild 第一个孩子 正常浏览器
var one.firstElementChild || one.firstChild;
lastChild
lastElementChild
(4)孩子节点(这个比较常用,虽然有点小问题)
childNodes 选出全部的孩子——元素节点 文本节点 属性节点
childNodes:它是标准属性,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本节点 (嫡出)
火狐 谷歌等高本版会把换行也看做是子节点
利用 nodeType == 1 时才是元素节点 来获取元素节点
(重要)children 选取所有的孩子——只有元素节点;这个更好 跟喜欢它 。 (庶出) 但是ie 678 包含 注释节点 这个要避免开。
6、DOM节点操作部分(非常重要)
创建节点 插入节点 删除节点 克隆节点
谁要添加 谁要删除 谁要克隆
(1)创建节点(是插入的根基)
document.createElement(类型);
举例:var div = document.creatElement(“li”); 生成一个新的 li 标签
(2)插入节点
①appendChild() 默认插入到最后面
②insertBefore(插入节点,参照节点)
如果第二个参数不为空,则将插入节点放到参照节点的前面;如果第二个参数 为 null 则 默认这新生成的盒子放到最后面。
(3)删除节点
removeChild()
(4)克隆节点
cloneNode(bool); 参数为false,浅层复制,只复制父亲,不复制儿子; 参数为true时,深层复制,包括儿子一起复制。
JS操作DOM对象——JS基础知识(四)的更多相关文章
- js操作DOM对象
js操作DOM对象 (Document Object Model)文档对象模型 nodeType返回值 1:元素节点 2:属性节点 3:文本节点 8:注释节点 9: 文档节点 nodeName 节点 ...
- 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)
[JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...
- JavaScript基础15——js的DOM对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 原生js操作DOM基础-笔记
原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e ...
- js的DOM对象
1.js的Array对象 ** 创建数组(三种) - var arr1 = [1,2,3]; ...
- 前端之JavaScript:JS之DOM对象三
js之DOM对象三 一.JS中for循环遍历测试 for循环遍历有两种 第一种:是有条件的那种,例如 for(var i = 0;i<ele.length;i++){} 第二种:for ...
- 前端之JavaScript:JS之DOM对象二
继续JS之DOM对象二 前面在JS之DOM中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement(' ...
- 前端之JavaScript:JS之DOM对象一
js之DOM对象一 一.什么是HTML DOM HTML Document Object Model(文档对象模型) HTML DOM 定义了访问和操作HTML文档的标准方法 HTML DOM 把 ...
- 框架操作DOM和原生js操作DOM比较
问题引出 对于Angular和React操作DOM的速度,和原生js操作DOM的速度进行了一个比较: 一个同学做的demo 代码如下: <!DOCTYPE html> <html n ...
随机推荐
- utf8 文件 错误保存为gbk 中文乱码 解决方法
用zend studio 将utf-8 格式的文件 保存为 gbk 了,之后无论怎么装换 中文都是乱码 用 beyond compare(文件比较工具 对编码支持的比较强大) 打开,改下编码,中文就 ...
- 【翻译】Longest Palindromic Substring 最长回文子串
原文地址: http://articles.leetcode.com/2011/11/longest-palindromic-substring-part-i.html 转载请注明出处:http:// ...
- HDU 2063 最大匹配的基础题
中文题,题目大意不说了. 思路:就是寻找最大匹配,最大匹配就是每次找增广路,如果存在增广,那就把增广路上面的边全部都翻转即可.这样说明能多匹配一个,+1即可. //看看会不会爆int!数组会不会少了一 ...
- psy 2
PSY,心理线,顾名思义,庄家要洗筹必须打破市场尤其是散户的心理防线,才能让大家乖乖的交出筹码.月线的心理线尤其重要,PSY有几个数值,16,25,33,41,50,66,75.PSY的运用也是抓大黑 ...
- Java 反射实例
实体类:Userpackage com.reflect.model; public class User{ private User(int id, String username, String p ...
- 1*Json对象声明简单,复合,对象数组
//简单JSON对象 function btn1_click() { var json = { "id": 1001, "name": "张三&quo ...
- TOMCAT-publishing to tomcat v7.0 server at
因为tomcat的work文件没有清空,导致MyEclipse部署在server.xml文件中的项目路径是错误的. 解决办法:清空work文件夹 下面这个勾勾是MyEclipse自动发布项目路径的选项
- idea控制台输出乱码
找到安装目录bin下面的idea64.exe.vmoptions,打开后在最后一行增加 -Xms128m -Xmx750m -XX:MaxPermSize=350m -XX:ReservedCodeC ...
- OpenGL---------光照的基本知识
从生理学的角度上讲,眼睛之所以看见各种物体,是因为光线直接或间接的从它们那里到达了眼睛.人类对于光线强弱的变化的反应,比对于颜色变化的反应来得灵敏.因此对于人类而言,光线很大程度上表现了物体的立体感. ...
- HDU 2255 奔小康赚大钱 KM算法的简单解释
KM算法一般用来寻找二分图的最优匹配. 步骤: 1.初始化可行标杆 2.对新加入的点用匈牙利算法进行判断 3.若无法加入新编,修改可行标杆 4.重复2.3操作直到找到相等子图的完全匹配. 各步骤简述: ...