js常用DOM操作

在博客园看到了苏夏写的常用DOM整理文章,地址:http://www.cnblogs.com/cabbagen/p/4579412.html,然后抽时间都试了一下这些常用的DOM操作。在这里记录一下。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>常用dom</title>
 6     <script>
 7         window.onload = function(){
 8             function $(id){ //获取id元素
 9                 return typeof id === 'string' ? document.getElementById(id) : id;
10             }
11             //取得节点
12             var box = $('box'); //得到id名为box的元素节点
13             var div = document.getElementsByTagName('div'); //得到所有标签为div的元素节点集合
14             var name = document.getElementsByName('our'); //得到name为our的元素
15             //var cls = document.getElementsByClassName('box'); //ie8及以下不支持
16             //var clsdiv = document.querySelectorAll('#box,#boxs'); //找到所有id为box和boxs的元素数组集合querySelector只能找到第一个,ie8以上才支持
17 
18 
19             //遍历节点
20             var ul = $('ul');
21             var lis = ul.children; //取得ul下的直系子元素li
22             var lis1 = getFirst(ul); //在火狐下它返回指定元素的子元素集合,包括HTML节点,所有属性,文本。只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。
23             function getFirst(ele){ //通过childNodes封装得到第一个子元素
24                 for(var i=0;i<ele.childNodes.length;i++){
25                     if(ele.childNodes[i].nodeType == 1){
26                         return ele.childNodes[i];
27                     }
28                 }
29             };
30             var lisFirst = firstChild(ul);  //也可以这样获取到第一个子元素,比较方便
31             var lisLast = lastChild(ul); //也可以这样获取到最后一个子元素,比较方便
32             function firstChild(node){ //封装得到第一个子元素
33                 return node.firstElementChild || node.firstChild; 
34             };
35             function lastChild(node){ //封装得到最后一个子元素
36                 return node.lastElementChild || node.lastChild; 
37             };
38             function prev(node){ //得到上一个元素
39                 return node.previousElementSibling || node.previousSibling; 
40             };
41             function next(node){ //得到下一个元素
42                 return node.nextElementSibling || node.nextSibling; 
43             };
44             var parent = $('con').parentNode; //得到id为con的元素的父节点也就是得到了id为box的元素节点
45 
46 
47             //获取节点信息
48             var nodeName = $('box').nodeName; //获取元素或者属性节点的标签名称 结果是:DIV 
49             var nodeValue = $('con').childNodes[0].nodeValue; //获取文本节点的内容 结果是:文本节点内容
50             var innerHTML = $('inner').innerHTML; //获取并设置元素节点的内容 结果是:文本节点内容<span>123</span> 可能会包含HTML标签
51             var innerText = innerText($('inner')); //获取并设置元素节点的纯文本内容不包含标签结果是:文本节点内容123 (ie用innerText,ff用textContent)
52             function innerText(node){
53                 return node.textContent || node.innerText;
54             };
55             for(var i=0;i<lis.length;i++){
56                 var index = lis[i].getAttribute('index'); //获取属性节点的值
57                 lis[i].setAttribute('index', i); //设置属性节点的值
58             };
59             var nodeType = $('ul').attributes[0].nodeType; //获取节点的类型 元素节点: 1;属性节点: 2;文本节点: 3;文档节点: 9;注释节点: 8;
60 
61 
62             //操作节点
63             var input = document.createElement('input'); //创建元素节点
64             var textNode = document.createTextNode('你们好'); //创建文本节点
65             var attrNode = document.createAttribute('index'); //创建属性节点
66             attrNode.value = '123';
67             $('box').setAttributeNode(attrNode);
68             //$('box').remove(); //删除节点 在ie中 .removeNode(true)
69             $('ul').removeChild($('ul').children[0]);
70             document.body.appendChild(textNode); //插入节点
71             var clone = $('con').cloneNode([true]); //克隆节点 传入true为深度复制,会把内容也复制过来
72             document.body.appendChild(clone);
73             $('box').replaceChild(input, $('con')); //替换节点
74             function addClass(element,className) { //添加class
75                  element.className += className;
76             };
77             function removeClass(element,removeClassName) { //移除class
78                  var classStr = element.className;
79                  element.className = classStr.replace(removeClassName,'').split(/\s+/).join(' ').replace(/^\s+/,'').replace(/\s+$/,'');
80             }  
81             addClass($('box'), ' haha ei');
82             removeClass($('box'), 'haha');
83         }
84     </script>
85 </head>
86 <body>
87     <div id="box" class="box wo" name="our">
88         <div id="con">文本节点内容</div>
89     </div>
90     <div id="boxs" class="box" name="our"></div>
91     <div id="inner">文本节点内容<span>123</span></div>
92     <ul id="ul">
93         <li index="0"></li>
94         <li index="1"></li>
95         <li index="2"></li>
96     </ul>
97 </body>
98 </html>

 

转载于:https://www.cnblogs.com/dibaosong/p/4588161.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android传递数据bundle封装传递map对象

android开发默认情况下&#xff0c;通过Bundle bundlenew Bundle();传递值是不能直接传递map对象的&#xff0c;解决办法&#xff1a; 第一步&#xff1a;封装自己的map,实现序列化即可 ?12345678910111213141516/*** 序列化map供Bundle传递map使用* Created on 13-12-9.*/pu…

求1到n ,这n个整数的二进制表示比特1的个数(时间复杂度:O(n))

题目描述&#xff1a; 给定一个数字n&#xff0c;统计1&#xff5e;n之间的n个数字的二进制的1的个数 int Nums_Of_Bit_1(int num) { int* number new int[num]; int pow 1,before 1; int count 0; for(int i1; i<num; i){ if (i pow){ …

mysql支持cube_mysql聚合函数rollup和cube

一、with rollup&#xff1a;with rollup通常和group by语句一起使用&#xff0c;是根据维度在分组的结果集中进行聚合操作。——对group by的分组进行汇总。假设用户需要对N个纬度进行聚合查询操作&#xff0c;普通的groupby语句需要N个查询和N次group by操作。而rollup的有点…

域名详解

定义 是由一串用 “.” 分割的字符组成的Internet上某一台计算机或计算机组的名称&#xff0c;域名的本质是IP地址的一个映射&#xff0c;域名的目的是便于记忆和沟通的一组服务器的地址。 域名解析 域名解析的过程实际上是将域名还原为IP地址的过程 &#xff08;1&#xf…

navicat远程mysql_navicat 远程连接mysql

一、修改用户权限&#xff1a;需要手动增加可以远程访问数据库的用户。方法一(不推荐)、本地登入mysql&#xff0c;更改 "mysql" 数据库里的 "user" 表里的 "host" 项&#xff0c;将"localhost"改为"%"#mysql -u root -proo…

应用层协议:HTTP与HTTPS协议详解、二者的区别

http协议详解 1、HTTP协议&#xff1a;超文本传输协议 是一种分布式、合作式、多媒体信息系统服务&#xff0c;面向应用层的协议。是一种通用的&#xff0c;不分状态的协议。是一种请求/应答协议。1.1、HTTP/1.0和HTTP/1.1的比较 RFC 1945定义了HTTP/1.0版本。其中最著名的就…

Mutual and feedback(互评与反馈)

互评与反馈&#xff1a; 注&#xff1a;我在收集各小组对我小组的评价了&#xff0c;发现有几个没有收集到&#xff0c;不知道是我看不到还是贵小组不小心遗漏了对我小组的评价&#xff0c;如果看到&#xff0c;请给我留意&#xff0c;谢谢&#xff01; 组名 对…

php mysql xa事务_XA mysql php 分布式事务

$XAuniqid("");$db->query("XASTART$XA");$db1->query("XASTART$XA");$insert1"insertintomytablevalues(?,?,?,?,?)";$paramsarray(12345678,123456789,444,555,1);$db->inser...$XA uniqid("");$db -> …

[POJ 1330] Nearest Common Ancestors (倍增法)

题目同上篇&#xff0c;最近公共祖先。 因为没有清零tot&#xff0c;RE了好多次TAT 一定要初始化啊&#xff01;&#xff01; 1 #include<cstdio>2 #include<cstring>3 #include<queue>4 #include<iostream>5 using namespace std;6 int root,head[100…

javascript console 函数详解 js开发调试的利器 浏览:3201|更新:2014-05-30 09:27

引用地址&#xff1a;http://jingyan.baidu.com/article/e75aca855c6419142edac6c1.html一键约师傅百度师傅最快的到家服务&#xff0c;最优质的电脑清灰&#xff01;Console 是用于显示 JS和 DOM 对象信息的单独窗口。并且向 JS 中注入1个 console 对象&#xff0c;使用该对象…

链路层基本问题 : 封装成帧、差错检测、流量控制

一、封装成帧 1、MAC帧 类型字段 &#xff08;2个字节&#xff09;&#xff1a; 用来标志上一层使用的是什么协议&#xff0c;以便把收到的MAC帧的数据上交给上一层的这个协议。 数据字段 &#xff08;46-1500&#xff09;&#xff1a; 正式名称是MAC客户数据字段最小长度6…

mysql 5.7 super_MySQL 5.7 下的对super用户只读

在MySQL的主从复制场景下&#xff0c;遇上slave被意外写入数据是一件比较严重的问题&#xff0c;毕竟在一般情况下我们都希望slave仅用只读数据库&#xff0c;如果被意外写入数据可能会造成数据的不一致&#xff0c;从而导致主从的报错。因此在MySQL中可以通过设置变量参数read…

CSS 链接

2019独角兽企业重金招聘Python工程师标准>>> 不同的链接可以有不同的样式。 链接样式 链接的样式&#xff0c;可以用任何CSS属性&#xff08;如颜色&#xff0c;字体&#xff0c;背景等&#xff09;。 特别的链接&#xff0c;可以有不同的样式&#xff0c;这取决于他…

iOS项目开发优秀文章汇总

UI界面 iOS和Android 界面设计尺寸规范 http://www.alibuybuy.com/posts/85486.html iPhone app界面设计尺寸规范 http://www.wufangbo.com/ios-iphone-app/ iOS界面设计切图小结 http://www.apkbus.com/android-140341-1-1.html 2x图片等适应不同分辨率手机 http://blog.…

数据链路层:ARP协议详解(绝对经典)

&#xff11;、ARP协议定义&#xff1a; 地址解析协议&#xff0c;工作在数据链路层&#xff0c;在本层和硬件接口联系&#xff0c;同时向上层提供服务。IP数据包常通过以太网发送&#xff0c;以太网设备不识别32位IP地址&#xff0c;他们是以48位以太网地址传输以太网数据包的…

php pdo操作mysql_PHP操作数据库详细(PDO)

PHP 5.1 发布时将附带一个全新的数据库连接层&#xff0c;即 PHP Data Objects (PDO)。虽然 PHP 一直都拥有很好的数据库连接&#xff0c;但 PDO 让 PHP的数据库操作 达到一个新的高度。PDO可支持基本的MySQL、Microsoft SQL Server、Oracle等数据库&#xff0c;并且提供了统一…

HTTP POST请求报文格式分析与Java实现文件上传

时间 2014-12-11 12:41:43 CSDN博客原文 http://blog.csdn.net/bboyfeiyu/article/details/41863951主题 HTTP HttpComponents在开发中&#xff0c;我们使用的比较多的HTTP请求方式基本上就是GET、POST。其中GET用于从服务器获取数据&#xff0c;POST主要用于向服务器提交一些…

网络层:IP协议详解(IP协议真的得看这篇)

1、IP协议概念 IP&#xff08;Internet Protocol , 互联网协议&#xff09;主要用于互联网通信。IP协议用于将多个包交换网络连接起来&#xff0c;他在原地址和目的地址之间传输数据报&#xff0c;还提供对数据大小的重新组装功能&#xff0c;以适应不同网络的要求。 IP协议是…

mysql my.cnf_如何知道mysql的my.cnf位置

你实际上可以让MySQL显示搜索my.cnf(或Windows上的my.ini)的所有位置的列表。 它不是一个SQL命令。 是终端命令&#xff0c;执行&#xff1a;$ mysqld –help –verbose在第一行&#xff0c;你会发现一个消息&#xff0c;列出所有my.cnf位置。 在我的机器上是&#xff1a;Defau…

传输层两大协议:TCP与UDP详解(两者的联系与区别)

一、TCP协议 1、TCP协议报文格式 TCP协议报文格式详解 2、TCP“三次握手”建立连接 位码即tcp标志位,有6种标示: SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) Sequence number(顺序号码) Ac…