获取元素的方法

要操作谁,就要先获取谁;

获取元素

1、document.getElementById:通过ID名来获取元素

兼容性: 在IE8以下,会默认把name属性当做id来获取;
document : 文档;上下问必须是document
get : 获取
element : 元素
By : 通过
Id : ID名字;
id 是唯一的;不能重复
var oBox = document.getElementById("box");// {className:"",style:{}}
var oBox1 = oBox.getElementById("box1");
var a = document.getElementById("a");
console.log(a);
console.log(oBox);
console.log(typeof oBox);// "object"
oBox.style.background = "red";

2、document.getElementsByTagName: 通过标签名来获取元素

是一个类数组集合
var arr = oBox.getElementsByTagName("span");// "标签名"[{style:{}]
arr[0].style.background = "red";
console.log(arr);

3、document.getElementsByClassName(); 类数组集合;

IE8及以下是不兼容的;
通过class名字来获取元素;
var a = document.getElementsByClassName("box");
console.log(a.length);
console.log(a);

4、document.getElementsByName;通过name属性来获取元素;

在IE9及以下,会默认把id名是a的获取到;
var inputs = document.getElementsByName("a");
console.log(inputs);

5、document.documentElement 获取当前的html

console.log(document.documentElement);
var htm = document.getElementsByTagName("html")
console.log(htm);

6、body :获取页面的body元素;

console.log(document.body);
获取当前浏览器可视窗口高度和宽度
var winW= document.documentElement.clientWidth || document.body.clientWidth;
var winH = document.documentElement.clientHeight || document.body.clientHeight;
console.log(winW);
console.log(winH);

7、document.querySelector();

var divs = document.querySelector(".box");
// 如果是id名,前面需要加一个#;如果是class,要加一个.
console.log(divs);

8、document.querySelectorAll();

// querySelectorAll: 获取所有的元素;
var divs = oBox.querySelectorAll("div")
console.log(divs);

DOM的节点和属性

DOM的节点 : 四种类型的节点;
TYPE nodeType nodeName nodeValue
元素节点 1 大写的标签名 null
文本节点 3 text 文本内容
注释节点 8 comment 注释内容
document 9 document null
空格和换行都是文本节点;

节点的属性

1、childNodes : 获取当前元素所有的子节点;

console.log(parent.childNodes);
parent.childNodes[1].style.width="100px";

2、children : 获取当前元素的子元素节点;

3、firstChild : 获取第一子节点;

firstElementChild : 第一个子元素节点; 在IE8及以下,是不兼容的;

4、lastChild :获取最后一个子节点

lastElementChild : 最后一个子元素节点;在IE8及以下,是不兼容的;
console.log(parent.firstChild);
console.log(parent.firstElementChild);

5、 previousSibling : 获取上一个哥哥节点

previousElementSibling 封装
var last = document.getElementById("last");
// 获取上一个哥哥的元素节点;
function getBrother(curEle) {
var pre = curEle.previousSibling;
while(pre){
if(pre.nodeType ===1){//不满足,说明不是一个元素;
return pre;
}
pre = pre.previousSibling;
}
return pre;
}
getBrother(sec);
getBrother(last)

6、 nextSibling : 获取下一个弟弟节点

nextElementSibling : 获取下一个元素弟弟节点;
console.log(sec.previousSibling);

7、parentNode: 获取当前元素的父亲节点;

console.log(sec.previousSibling);
console.log(sec.parentNode.previousElementSibling);
var body =document.body;
document 没有父亲节点;如果没有获取结果就是null;
console.log(body.parentNode.parentNode.parentNode);

动态操作DOM的方法

oBox.innerHTML = "函数很重要";

1.document.createElement;创建元素

var newDiv = document.createElement("div");
console.log(newDiv);

2.appendChild : 向元素的末尾添加子节点;

父级.appendChild(儿子)
oBox.appendChild(newDiv);
//Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'
var div = document.getElementsByTagName("div")[1];

3.removeChild : 删除子节点;

oBox.removeChild(div);
var span = document.createElement("span")

4.replaceChild : 替换节点;

父级.replaceChild(newChild,oldChild);
oBox.replaceChild(span,div);

5.insertBefore :把元素节点插入某个节点的前面

父级.insertBefore(newChild,oldChild)
oBox.insertBefore(span,div);

6.cloneNode : 复制节点;

// 参数: true: 深克隆,会当前元素以及子孙节点全部获取到
// false或不传 : 浅克隆,只会克隆当前元素节点;
console.log(oBox.cloneNode(true));
console.log(oBox.cloneNode());
var a = document.getElementsByClassName("a")[0];
var b = a.cloneNode(true);
oBox.appendChild(a);

7. set/get/remove Attribute : 设置自定义行内属性;

//getAttribute 不能获取通过元素.属性 = 属性值这种方式新增的属性;可以获取行内直接设置的,还有通过setAttribute 来设置的属性;
div.setAttribute("name","time");
div.index = 100;
console.log(div.name);// undefined
div.setAttribute("na","ti")
如果获取不到自定义行内属性,结果就是null;
console.log(div.getAttribute("name"));
console.log(div.getAttribute("index"));
console.log(div.getAttribute("hh"));
// 移出行内属性
div.removeAttribute("na");

JavaScript基础知识(DOM)的更多相关文章

  1. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  2. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  3. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  4. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  5. (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识

    开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...

  6. JavaScript基础知识从浅入深理解(一)

    JavaScript的简介 javascript是一门动态弱类型的解释型编程语言,增强页面动态效果,实现页面与用户之间的实时动态的交互. javascript是由三部分组成:ECMAScript.DO ...

  7. JavaScript基础知识梳理,你能回答几道题?

    在学习JavaScript的时候,总是这里学一点,那里学一点,很的很零星,很杂,没有很系统的去学习,感觉好像JavaScript的知识点都了解了,但是真正要说起来,又不知道从何说起! 最深刻的体会就是 ...

  8. 林大妈的JavaScript基础知识(三):JavaScript编程(2)函数

    JavaScript是一门函数式的面向对象编程语言.了解函数将会是了解对象创建和操作.原型及原型方法.模块化编程等的重要基础.函数包含一组语句,它的主要功能是代码复用.隐藏信息和组合调用.我们编程就是 ...

  9. 学习React之前你需要知道的的JavaScript基础知识

    在我的研讨会期间,更多的材料是关于JavaScript而不是React.其中大部分归结为JavaScript ES6以及功能和语法,但也包括三元运算符,语言中的简写版本,此对象,JavaScript内 ...

  10. JavaScript——基础知识,开始我们的js编程之旅吧!

    JavaScript基础第01天 1. 编程语言 编程语言: 可以通过类似于人类语言的"语言"来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言(Programming ...

随机推荐

  1. Gitlab团队协作流程

    一:加入群组 项目管理员添加用户到群组,赋予权限(owner.developer...). 二:拉取项目,建立分支 通过git clone拉取项目到本地,通过终端打开项目目录,创建自己的分支,并推送到 ...

  2. R文本挖掘之jiebaR包

    library(jiebaRD)library(jiebaR)  ##调入分词的库cutter <- worker()mydata =read.csv(file.choose(),fileEnc ...

  3. TableView 无数据时展示占位视图

    UITableView+NoDataView.m #import "UITableView+NoDataView.h" #import "NoDataView.h&quo ...

  4. 关于VC预定义常量_WIN32,WIN32,_WIN64

    VC2012 下写 Windows 程序时,有时需要判断编译环境.在之前的文章<判断程序是否运行在 Windows x64 系统下.>里说过如何在运行期间判断系统环境,但在编译时如何判断? ...

  5. Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx  Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api

    Atitit s2018.6 s6  doc list on com pc.docx Atitit s2018.6 s6  doc list on com pc.docx  Aitit algo fi ...

  6. Redis 分布式锁的实现

    0X00 测试环境 CentOS 6.6 + Redis 3.2.10 + PHP 7.0.7(+ phpredis 4.1.0) [root@localhost ~]# cat /etc/issue ...

  7. 系统编码,文件编码,python编码

    系统编码,可以通过locale命令查看(LINUX)https://wiki.archlinux.org/index.php/Locale_(简体中文), centos7 配置文件在/etc/prof ...

  8. TextView 链接显示及跳转

    当文字中出现URL.E-mail.电话号码等的时候,我们为TextView设置链接.总结起来,一共有4种方法来为TextView实现链接.我们一一举例介绍: 1. 在xml里添加android:aut ...

  9. 框架源码系列三:手写Spring AOP(AOP分析、AOP概念学习、切面实现、织入实现)

    一.AOP分析 问题1:AOP是什么? Aspect Oriented Programming 面向切面编程,在不改变类的代码的情况下,对类方法进行功能增强. 问题2:我们需要做什么? 在我们的框架中 ...

  10. springboot-multisource

    项目中经常会出现需要同时连接两个数据源的情况,这里基于MyBatis来配置两个数据源,并演示如何切换不同的数据源. 通过自定义注解+AOP的方式,来简化这种数据源的切换操作. <properti ...