DOM节点

  1. document
    页面中最大的节点,有且只有一个。不属于元素节点,是页面中所有节点的容器。 根节点。
  2. html
    页面中最大的元素节点。根元素节点。
  3. 元素节点
    html标签
  4. 文本节点
    每一段文本内容都是一个文本节点
    包含 换行 和 空格
    一般来说作为元素节点的子节点存在。
  5. 属性节点:
    属性节点不能单独存在,必须依赖于元素节点。
  6. 注释节点
    页面中的注释,作为说明文本使用户。

自定义获取元素节点方法

       function elementsByClassName(node,classStr){// 1.获取node这个节点下面的所有子节点。var nodes = node.getElementsByTagName("*");// 2.存放符合条件的节点var arr = [];//3.遍历所有的子节点for (var i = 0; i < node.length; i++) {//4.判断子节点的class是否与传入的classStr相等if(nodes[i].className === classStr){//5.若相等,则将其放入数组中。arr.push(nodes[i]);}}return arr;}elementsByClassName(node,classStr)

node 表示传入的节点,获取该节点的元素节点。
classStr 表示传入的classname ,通过classname匹配元素节点

操作元素节点的属性

标签上的属性分类:
1.原生属性
2.自定义属性
3.H5 自定义属性

  1. 原生属性
    语法:元素.属性名
 window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];// 获取idconsole.log(oDiv.id);}
<body><div class="box" id="box1" data-list="idBox">这是div标签</div>
</body>

获取id属性

修改/新增:
元素.属性名 = “值”


id被修改

获取:
元素.属性名

【注意】class属性是例外,不能直接通过属性名获取,而是用className

  1. 自定义属性
    不能直接使用
    元素. 这个语法来获取。
    三个方法去操作:
    获取
    getAttribute(“属性名”);
   <script>var oDiv = document.getElementsByTagName("div")[0];console.log(oDiv.getAttribute("id"));</script><body><div class="container" id="box" index="index" data-id="idBox">我是div标签</div></body>

返回值:字符串

设置
setAttribute(“属性名”,“属性值”)

<script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];oDiv.setAttribute("id", "box2");
</script>
<body><div class="container" id="box" index="index" data-id="idBox">我是div标签</div>
</body>


id的属性发生变化

删除
removeAttribute(“属性名”)

<script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];//删除idoDiv.removeAttribute("id");
</script>
<body><div class="container" id="box" index="index" data-id="idBox">我是div标签</div>
</body>


这里id被删除。

操作元素的类名

  1. 按照原生属性的方式来操作
    获取
    元素.className
    设置
    元素.className = “值”
    <script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];//设置元素的值oDiv.className = "addd";</script><body><div class="box" id="box1" data-list="idBox">这是div标签</div></body>


div的类发生改变

追加:
元素.className += " 值";
【注意】 追加时,值的前面要加一个空格。

    <script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];// 追加Bdiv.className += " divBox a b";console.log(Bdiv.className);</script><body><div class="box a b c" id="idBox">这是一个div标签</div></body>


div的类在后面追加。
删除:
重新设置一遍。

    <script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];// 删除Bdiv.className = "box a b";console.log(Bdiv.className);</script><body><div class="box a b c" id="idBox">这是一个div标签</div></body>

  1. H5标准给我们一个API
    元素节点都有一个属性叫做:classList
    里面包含了所有的class值。
    获取:
    元素.classList 获取class值的集合。
    想要获取单个,使用下标。
    获取全部数为数组
    <script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];// 获取class值的集合,数组。Bdiv.classList;console.log(Bdiv.classList);</script><body><div class="box a b c" id="idBox">这是一个div标签</div></body>


新增:
元素.classList.add(“新增的类名”)

    <script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];// 新增类名Bdiv.classList.add("d");console.log(Bdiv.classList);</script><body><div class="box a b c" id="idBox">这是一个div标签</div></body>

删除:
元素.classList.remove(“删除的类名”)

    <script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];// 删除类名。Bdiv.classList.remove("a", "b");console.log(Bdiv.classList);</script><body><div class="box a b c" id="idBox">这是一个div标签</div></body>

替换:
元素.classList.replace(“旧类名”,“新类名”) ;

    <script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];// 替换Bdiv.classList.replace("a", "bood");console.log(Bdiv.classList);</script><body><div class="box a b c" id="idBox">这是一个div标签</div></body>


toggle() 切换
语法:元素.classList.toggle(类名)
当元素拥有这个类名时,将类名删除
当元素没有这个类名时,将类名添加

    <script>window.onload = function() {var oDiv = document.getElementsByTagName("div")[0];// 切换 ,用有删除,没有添加。Bdiv.classList.toggle("a");console.log(Bdiv.classList);</script><body><div class="box a b c" id="idBox">这是一个div标签</div></body>

操作元素节点中的内容

  1. innerHTML
    获取元素节点中除了本身的标签外,所有的HTML代码。
    获取:
    元素.innerHTML
    设置:
    元素.innerHTMl = “新的内容”
     <script>window.onload = function(){var box = document.getElementById("box");var inp = document.getElementById("inp");box.innerHTML = "<h1>我是新的innerHTML</h1>";</script><body><div id="box">我是div标签<br><p>我是后面的内容</p><input type="text" id="inp"></div></body>


运行后里面的内容被更改。

【注意】 innerHTML 会覆盖原有的内容,而且会解析其中的标签。

  1. innerText
    获取元素节点中的文本内容,会覆盖原有的内容,不会解析内容中的标签。
    获取:
    元素.innerText
    设置:
    元素.innerText = “新的内容”;
     <script>window.onload = function(){var box = document.getElementById("box");var inp = document.getElementById("inp");//innerHTMLbox.innerText = "<h1>我是新的innerText</h1>";</script><body><div id="box">我是div标签<br><p>我是后面的内容</p><input type="text" id="inp"></div></body>


这里添加的是文本内容没有添加上标签。

  1. value
    主要使用在表单元素中。
    操作表单元素节点的value属性。
    获取:
    表单元素节点.value
    设置:
    表单元素节点.value = “值”
     <script>window.onload = function(){var box = document.getElementById("box");var inp = document.getElementById("inp");inp.value = "输入的信息";console.log(inp.value);</script><body><div id="box">我是div标签<br><p>我是后面的内容</p><input type="text" id="inp"></div></body>

函数的执行

里面若涉及到了变量
在定义的时候不解析变量,而是按照变量名保存,
只有在函数调用时,才会解析变量
this:
在函数中,this保存的是函数调用者的地址信息。
谁调用了当前的函数,this就表示谁。

操作元素节点的样式

元素节点的样式:

行内样式:
原生属性的方式获取
元素.style.样式的属性名
【注意】如果属性名是多个单词,第二个单词首字母大写,删除中划线。
该方法只能获取行内。
获取元素的有效样式
标准浏览器:
getComputedStyle(要获取样式的元素)
获取元素的属性:

   <script>window.onload = function() {var box = document.getElementById("box");console.log(getComputedStyle(box).width);</script><body><button id="btn">变色</button><div id="box" style="height: 100px;background-color: hotpink;"></div>
</body>


获取box的宽

设置样式
语法:元素.style.样式名 = “值”;

   <script>window.onload = function() {var box = document.getElementById("box");// 点击事件点击按钮更换颜色btn.onclick = function(){box.style.backgroundColor = "blue";}</script><body><button id="btn">变色</button><div id="box" style="height: 100px;background-color: hotpink;"></div>
</body>


开始的颜色

点击之后更换属性值。

属性节点:

获取元素节点的属性节点
元素.attributes

    <script>window.onload = function() {box = document.getElementById("box");console.log(box.attributes);// console.log(box.attributes.getNamedItem("name"));}</script>
</head><body><div id="box" name="boxName" class="home"></div>
</body>


单个属性节点:
元素.attributes.getNamedItem(“属性名”);

    <script>window.onload = function() {box = document.getElementById("box");console.log(box.attributes.getNamedItem("name"));}</script>
</head><body><div id="box" name="boxName" class="home"></div>
</body>


获取属性名。

通过节点关系获取节点

  • 获取父节点。
    节点.parentNode

  • 获取兄弟节点
    1.下一个节点
    node.nextSibling
    对于标准浏览器,标签,空文档,换行都属于节点。
    IE低版本:指下一个元素节点。
    2.下一个元素节点
    node.nextElementSibling
    下一个兄弟节点 = 节点.nextElementSibling||节点.nextSibling
    3.上一个节点
    node.previousSibling
    4.上一个元素节点
    node.previousElementSibling

  • 获取单个子节点
    1.第一个子节点
    node.firstChild
    2.获取第一个元素节点
    node.firstElementChild
    3.获取最后一个子节点
    node.lastChild
    4.获取最后一个元素节点
    node.lastElementChild

  • 获取所有子节点
    1.获取所有子节点
    语法:node.childNodes
    返回的是子节点的伪数组(元素节点,文本节点,注释节点)
    2.获取所有的元素子节点
    语法:node.children
    返回元素节点。使用最多的方法。

节点的属性
属性:事物的特征

  • nodeName: 节点名称
    注释节点: #comment
    文本节点: #text
    元素节点: 大写的标签名
    属性节点: 属性名

  • nodeType:节点类型
    注释节点:8
    文本节点:3
    元素节点:1
    属性节点:2

  • nodeValue:节点的值
    注释节点:注释内容
    文本节点:文本内容
    元素节点:null
    属性节点:属性值

这里制作一个点名器

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}.name {width: 400px;height: 200px;background-image: linear-gradient(rgb(126, 214, 248), rgb(233, 140, 210), rgb(243, 233, 89));box-shadow: 0 0 20px 20px rgb(165, 108, 221);position: absolute;left: 50%;top: 50%;margin-left: -200px;margin-top: -100px;font-size: 80px;letter-spacing: 8px;text-align: center;line-height: 200px;color: #fff;animation: ani 1s linear infinite;}@keyframes ani {0% {box-shadow: 0 0 20px 20px rgb(165, 108, 221);}50% {box-shadow: 0 0 20px 5px #e74c3c;}}</style><script>window.onload = function() {var arr = ["亚索", "提莫", "卡莎", "辛德拉", "石头人", "赵信", "盖伦", "永恩"];var box = document.getElementsByClassName("name")[0];var bth = nullfunction oncl() {box.innerHTML = arr[Math.floor(Math.random() * 8)];}click.onclick = function() {if (bth == null) {clearInterval(bth);bth = setInterval(oncl, 80);} else {clearInterval(bth);bth = null;}}}</script>
</head><body><div class="name" id="click">亚索</div>
</body>
</html>

js ,DOM节点,制作点名器相关推荐

  1. 8、Js DOM节点,星星案列

    DOM节点:描述网页各个组成之间的关系 var.obj=document.getElementById("id名"): 火狐浏览器中的空白也算一个节点 ParentNode:父节点 ...

  2. JS DOM节点增删改查 属性设置

    一.节点操作 增 createElement(name)创建元素 appendChild();将元素添加 删 获得要删除的元素 获得它的父元素 使用removeChild()方法删除 改 第一种方式: ...

  3. js DOM节点操作之创建、添加、删除和克隆节点

    1. 创建节点 document.createElement("tagName"):tagName为HTML标签名,创建一个标签名为tagName的元素节点. <body&g ...

  4. js获取节点的DOM操作

    一直感觉DOM节点什么的乱七八糟的不能理解,可能博客也没办法写清楚,只能把知道的一些信息大致写下来慢慢再补充了. HTML DOM类型 Node类型 Javascript中的所有节点类型都继承自Nod ...

  5. 前端:JS/25/DOM官方定义,DOM分类,HTML节点树(节点关系,节点类型,),核心DOM中公共的属性和方法(节点访问,查找DOM节点,节点属性,节点的创建,追加和删除)

    DOM官方定义 DOM,Document Object Model,文档对象模型,我们可以把网页中的所有"东西"看成是对象": DOM的官方定义:DOM可以使用脚本,动态 ...

  6. 原生js由html创建节点,[js高手之路]HTML标签解释成DOM节点的实现方法

    最近在封装一个开源框架,已经写了500行, 已经具备jquery的大多数常用功能,后面还会扩展大量的工具函数和MVVM双向驱动等功能.跟jquery的使用方法完全一样,jquery的选择器,几乎都能支 ...

  7. js动态添加html元素绑定事件,JS实现动态添加DOM节点和事件的方法示例

    本文实例讲述了JS实现动态添加DOM节点和事件的方法.分享给大家供大家参考,具体如下: 运行效果图如下: 完整实例代码如下: /p> "http://www.w3.org/TR/xht ...

  8. 原生JS中DOM节点相关API合集

    原生JS中DOM节点相关API合集 节点属性 Node.nodeName //返回节点名称,只读 Node.nodeType //返回节点类型的常数值,只读 Node.nodeValue //返回Te ...

  9. js添加多个子节点_JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例

    本文实例讲述了JS实现DOM节点插入操作之子节点与兄弟节点插入操作.分享给大家供大家参考,具体如下: www.jb51.net JS节点插入 function showinsert(){ //添加子节 ...

最新文章

  1. ExecutorService与Executors例子的简单剖析(转)
  2. docker ubuntu镜像_Docker 入门指南 | Linux 中国
  3. 每日一皮:这真的是亲妈吗...
  4. Python 技术篇-全局与当前socket超时连接时间设置方法实例演示,查看socket超时连接时间
  5. 软件商店下载java_Sun升级Java应用商店
  6. how to deal with Demodex
  7. 1.Java之路(Java语言发展和概述以及特点)
  8. mysql common是什么_MySQL common_schema简介
  9. 数据库和数据挖掘领域的会议和期刊
  10. Taro+react开发(69):传入localstoage需要jsonstringfy处理
  11. 9.23 基础知识
  12. [转]知乎大神YaqiLYU关于tracking方向的2013-2016趋势总览!!!强烈推荐!!!
  13. mkdir() mkdirs() createNewFile
  14. AI技术如何做工程?
  15. linux u盘 随身,教你安装CentOS到U盘,制作随身Linux系统
  16. 免费版pycharm创建vue项目
  17. POJ 3764 Trie + 贪心
  18. 原生JS音乐歌词播放页面
  19. 视频会议软件的使用形式
  20. Python安装教程和Pycham教程

热门文章

  1. 除法的向上取整和向下取整
  2. python算法1加1_【Python爬虫作业】- 第一周01 笨方法0-10加分题
  3. 什么是多尺度密集网络 - MSDNet ?
  4. python亲和性分析_数据挖掘入门系列教程(一)之亲和性分析
  5. 视觉感知特性 【1】人类视觉系统的信息处理机制的4个特性
  6. gms认证流程_谷歌GMS测试认证具体流程
  7. 华为OWS平台和HEC服务浅见
  8. 【vue】【开源】vue开源电商项目hello-mall嗨喽商城
  9. 20170315学习笔记-前端
  10. excel窗体最大化最小化_最小化Excel 2007功能区