获取元素的方法

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

获取元素

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. php读取ini配置文件属性

    ini的内容格式如下,请根据自己的INI,格式修改下段程序. autostart = false font_size = font_color = red =================== fu ...

  2. TensorFlow实战Google深度学习框架5-7章学习笔记

    目录 第5章 MNIST数字识别问题 第6章 图像识别与卷积神经网络 第7章 图像数据处理 第5章 MNIST数字识别问题 MNIST是一个非常有名的手写体数字识别数据集,在很多资料中,这个数据集都会 ...

  3. Unity应用架构设计(9)——构建统一的 Repository

    谈到 『Repository』 仓储模式,第一映像就是封装了对数据的访问和持久化.Repository 模式的理念核心是定义了一个规范,即接口『Interface』,在这个规范里面定义了访问以及持久化 ...

  4. 安全工具-cansina

    Cansina是一款Web内容的发现工具,使用该工具指定详细的web目录内容作为payload即可破探测出web路径等资源. 工具安装操作如下 pip install --user requests[ ...

  5. 【原创 Hadoop&Spark 动手实践 13】Spark综合案例:简易电影推荐系统

    [原创 Hadoop&Spark 动手实践 13]Spark综合案例:简易电影推荐系统

  6. ffmpeg-hls实现分析

    [时间:2018-05] [状态:Open] [关键词:流媒体,stream,HLS, ffmpeg, demuxer,avformat] 0 引言 本文将关注于FFmpeg中的HLS相关实现,相关代 ...

  7. hdoj:2080

    夹角有多大II Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. Vue:$set和$delete

    一.$set 在开始讲解$set之前先看下面的一段代码,实现的功能:当点击“添加”按钮时,动态的给data里面的对象添加属性和值,代码示例如下: <!DOCTYPE html> <h ...

  9. win2003 序列号 windows2003 sp2可用序列号大全(准版与企业版)

    通用性好的win2003序列号: (推荐先用这个里面的) FJ8DH-TQPYG-9KFHQ-88CB2-Y7V3Y GRD4P-FTQQF-JCDM8-4P6JK-PFG7M JD7JX-KCDTH ...

  10. macOS Sierra 如何卸载.net core 版本

    由于目前没有找到一个合适的办法,将本机.NET Core的版本升级到1.1,故只有先卸载再安装最新版本了. 卸载脚本链接为:https://github.com/dotnet/cli/blob/rel ...