原生js操作dom备忘
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title></title>
</head>
<body lang="en-us">
<p><span class="className">1</span><i>2</i></p>
<div></div>
</body>
<script> /*-----------------------------------属性-----------------------------------*/ //childNodes -当前节点的全部子级节点(有的浏览器里会把元素里的空白节点转换成文本节点 nodeType==3)
var nodes=document.getElementsByTagName('p')[0].childNodes;
for(var i=0;i<nodes.length;i++){
/*
* <span>1</span>
* <i>2</i>
* */
console.info(nodes[i]);
} var childNodes=document.getElementsByTagName('p')[0];
//firstChild -childNodes里的第一个节点 相当于childNodes[0] *所有主流浏览器都支持 firstChild 属性。
//lastChild -childNodes里的最后一个节点 相当于childNodes[childNodes.length-1]
/*
* <span>1</span>
* <i>2</i>
* */
console.info(childNodes.firstChild);
console.info(childNodes.lastChild); //parentNode -父节点 如果指定节点没有父节点,则返回 null。
/*
*<p></p>
* */
console.info(childNodes.lastChild.parentNode); //nextSibling previousSibling -兄弟节点 如果没有 nextSibling previousSibling节点,则返回值为 null
/*
*<span>1</span>
*<i>2</i>
* */
console.info(childNodes.lastChild.previousSibling);
console.info(childNodes.firstChild.nextSibling); //nodeValue -返回元素节点里的值 注意:文本始终位于文本节点中
/*
*1
* */
console.info(childNodes.firstChild.childNodes[0].nodeValue); //nodeName -返回元素节点名称时,并不包含html里的<>符号
/*
* #text
* SPAN
* */
console.info(childNodes.firstChild.childNodes[0].nodeName);
console.info(childNodes.firstChild.nodeName); //tagName -返回元素的标签名
/*
*undefined
* SPAN
* */
console.info(childNodes.firstChild.childNodes[0].tagName);
console.info(childNodes.firstChild.tagName); //className -属性设置或返回元素的 class 属性
/*
*className
* */
console.info(childNodes.firstChild.className); // id -设置或返回元素的 id
childNodes.firstChild.id='hello';
console.info(childNodes.firstChild.id); //innerHTML -设置或返回元素的 inner HTML //lang -设置或返回元素的语言代码
console.info(document.getElementsByTagName('body')[0].lang); //title -设置或返回元素的标题 //textContent -返回所有子及后代节点的文本
console.info(document.getElementsByTagName('body')[0].textContent); //ownerDocument -以 Document 对象的形式返回节点的 owner document
console.info(document.getElementsByTagName('body')[0].ownerDocument); /*-----------------------------------方法-----------------------------------*/ //appendChild() -向节点添加最后一个子节点 也可以使用 appendChild() 方法从一个元素向另一个元素中移动元素
var p=document.getElementsByTagName('p')[0];
var textNode=document.createTextNode('world!');
var newElementNode=document.createElement('b');
newElementNode.appendChild(textNode);//添加元素
p.appendChild(newElementNode);//添加元素
var div=document.getElementsByTagName('div')[0];
div.appendChild(p);//移动元素 //cloneNode -克隆元素 创建节点的拷贝,并返回该副本
var cloneNode=div.cloneNode(true);//克隆所有后代,参数设置为true
document.getElementsByTagName('body')[0].appendChild(cloneNode); //insertBefore -在指定的已有子节点之前插入新的子节点
var listNode=document.createElement('ul');
var liNode=document.createElement('li');
listNode.appendChild(liNode);
var body=document.getElementsByTagName('body')[0];
body.appendChild(listNode);
var textNode=document.createTextNode('haha!');
body.insertBefore(textNode,listNode); //removeChild -从元素中移除子节点 返回值是对删除节点的引用
/*
* "haha"
* */
var delNode=textNode.parentNode.removeChild(textNode);
console.info(delNode); //replaceChild -用新节点替换某个子节点
var newNode=document.createTextNode('hehe!');
var oldNode=document.getElementsByTagName('p')[0].childNodes[0];
oldNode.parentNode.replaceChild(newNode,oldNode); //setAttribute getAttribute -设置和返回指定属性名的属性值
var div2=document.getElementsByTagName('div')[0];
div2.setAttribute('data-id','71121');
console.info(div2.getAttribute('data-id'));//71121 //normalize -移除空的文本节点,并连接相邻的文本节点
function addTextNode(){
var text=document.createTextNode('文本节点内容');
div2.appendChild(text);
}
addTextNode();
addTextNode();
console.info(div2.childNodes.length);
div2.normalize();
console.info(div2.childNodes.length);
原生js操作dom备忘的更多相关文章
- 框架操作DOM和原生js操作DOM比较
问题引出 对于Angular和React操作DOM的速度,和原生js操作DOM的速度进行了一个比较: 一个同学做的demo 代码如下: <!DOCTYPE html> <html n ...
- 原生js操作Dom节点:CRUD
知识点,依然会遗忘.我在思考到底是什么原因.想到研究生考试准备的那段岁月,想到知识体系的建立,知识体系分为正向知识体系和逆向知识体系:正向知识体系可以理解为教科书目录,逆向知识体系可以理解考试真题. ...
- 原生js操作DOM基础-笔记
原文参考http://mp.weixin.qq.com/s?__biz=MzU3MDA0NTMzMA==&mid=2247485490&idx=1&sn=15197b4b53e ...
- 原生js操作dom的方法
今天学习了原生js的dom节点的操作,就记录下来,仅供自己以后参考. 1)创建节点:除了可以使用createElement创建元素,也可以使用createTextNode创建文本节点. documen ...
- 原生Js操作DOM
查找DOM .querySelectorAll(),它接受包含一个CSS选择器的字符串参数,返回一个表示文档中匹配选择器的所有元素的NodeList元素. .querySelector(),返回第一个 ...
- 原生js 操作dom
1.一些常用的方法 obj.getElementById() 返回带有指定 ID 的元素. obj.getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节 ...
- 原生js操作Dom命令总结
常用的dom方法 document.getElementById(“box”);//通过id获取标签 document.getElementsByTagName(“div”);根据标签名获取页面 ...
- js 操作COOKE备忘
function getCookie(c_name) { if (document.cookie.length > 0) { c_start = document.cookie.indexOf( ...
- 使用原生 JavaScript 操作 DOM
原文:https://www.sitepoint.com/dom-manipulation-vanilla-javascript-no-jquery/ 微软官方放弃了 IE10-,所以现在可以放心使用 ...
随机推荐
- MyBatis原理分析之三:初始化(配置文件读取和解析)
1. 准备工作 编写测试代码(具体请参考<Mybatis入门示例>),设置断点,以Debug模式运行,具体代码如下: )ExecutorType:执行类型,ExecutorType主要有三 ...
- 01从c到c++
c++的发展历史 + 80年代贝尔实验室 本贾尼 + 83年 正式命名c++ + 87年 gnu制定了c++标准 + 92年 微软和IBM分别制定了c++标准 + 98年 ansi ISO 制定了标 ...
- 解析PHP正则提取或替换img标记属性
<?php/*PHP正则提取图片img标记中的任意属性*/$str = '<center><img src="/uploads/images/20100516000. ...
- Tomcat7启动log打印到INFO: At least one JAR was scanned for TLDs yet contained no TLDs.就停止不动了
环境: RHEL7,tomcat7.0.70 问题: 启动tomcat时,catalina.out日志打印到如下内容就停止不动了,也不报错 SEVERE: FarmWarDeployer can on ...
- [DFNews] EnCase 更新至 v7.10
有加密狗的可以注册接收邮件下载 暂时只有英文版 前几天讲课还说到,EnCase的Template倒是好,但是稍微改一下Case Template自带的Bookmark结构,那么Report就看不到了, ...
- SIP 解析
1 general-header类: 为描述消息基本属性的通用头域,可用于请求消息或响应消息:通用头域的域名只有在协议版本改变时才可有效地扩展.不过,通信中的所有方均认为是“通用头域”的新的头域也可认 ...
- W5500 keep-alive的用途与用法--新华龙电子
大家是否遇到过这样的问题,W5500作为服务器已经建立连接,突然网线掉了,然后再去连接W5500,就连不上了.为什么?下面对这个问题进行解释说明,并提出解决办法. 图1中的上位机程序作为客户端,连接W ...
- 欧洲宇航局(ESA)的协同设计室(CDF)
官方网站:http://www.esa.int/SPECIALS/CDF/
- 外壳exe通过反射调用dll时
外壳exe通过反射调用dll时,dll是 4.0的框架,外壳exe也需要编译成4.0的框架,如果dll本身有调用32位的dll,那么外壳exe也需要编译成32位. 调试时报的那个错,直接继续运行,不影 ...
- C# CRC-CCITT (Kermit)校验方法
using System; public enum Crc16Mode : ushort { Standard = 0xA001, CcittKermit = 0x8408 } public clas ...