JavaScript 基础 学习

获取页面中的元素的方法

作用:通过各种方式获取页面中的元素

​ 比如:id,类名,标签名,选择器 的方式来获取元素

伪数组:

​ 长的和数组差不多,也是按照索引排列

​ 也是有length属性,也可以使用for循环来遍历

​ 但是就是不能使用数组常用方法

1.通过 id 获取元素的方法

语法document.getElementById('你要获取的元素的 id')

返回值:是 dom 元素,也是叫做 dom 对象

​ 如果页面上有对应的 id 的元素,那么就是这个元素

​ 如果页面上没有对应的 id 的元素,那么就是 null

代码

var box = document.getElementById('box')

console.log(box)

2.通过类名获取元素的方法

语法document.getElementsByClassName('你要获取的元素的类名')

返回值:是一个 伪数组 ,伪数组里面包含着所有能获取到的元素

​ 页面上有多少类名符合的,那么这个伪数组里面就有多少个元素

​ 页面上没有类名符合的,那么就是一个空的伪数组

代码

var boxs = document.getElementsByClassName

console.log(boxs)

3.通过标签名获取元素的方法

语法document.getElementsByTagName('你要获取的元素的标签名')

返回值:是一个 伪数组 ,伪数组里面包含着所有能获取到的元素

​ 页面上有标签名符合的元素, 那么有多少, 这个伪数组里面就有多少

​ 页面上没有标签名符合的元素, 那么就是一个空的伪数组

代码:

var divs = document.getElementsByTagName

console.log(divs)

4.通过选择器获取一个元素的方法

语法document.querySelector('你要获取的元素的选择器')

​ 选择器 => 你 css 怎么捕获这个元素,那么这里就怎么写

返回值:满足选择器的第一个元素

​ 如果页面上有满足选择器的元素,那么返回第一个满足条件的元素

​ 如果页面上没有满足选择器的元素,那么就是 null

代码:

var div = document.querySelector('.box:last-child')

console.log(div)

5.通过选择器获取一组元素的方法

语法document.querSelectorAll('你要获取的元素的选择器')

返回值:一个伪数组

​ 如果页面上有满足选择器的元素, 有多少伪数组里面就有多少个

​ 如果页面上没有满足选择器的元素, 那么就是空伪数组

代码:

var divs = document.querySelectorAll('.box')

console.log(divs)

操作元素的属性 - 文本属性

​ 我们获取到的 dom 元素,本身也是一个对象

​ 其实就是操作这个 dom 元素的某一个成员内容

三个操作文本属性的方式

1.innerHTML

​ 是一个读写的属性

:获取一个元素的所有后代元素内容,包含 html 结构

​ 你得到的内容是一个字符串,不是 dom 元素了

语法:元素.innerHTML

:设置这个元素的内容部分,会完全覆盖式的写入

语法:元素.innerHTML = '你要写入的内容'

特点:你写入的时候,如果写入一个 html 格式的字符串,他能解析出来

注意:使用 innerHTML 属性来写入内容

2.innerText

​ 是一个读写的属性

:获取一个元素内所有的文本内容,包含后代元素的文本内容

​ 不包含 html 结构,是一个字符串

语法:元素.innerText

:设置这元素的内容部分,完全覆盖式的写入

语法:元素.innerText = '你要写入的内容'

特点:你写入的时候,如果写入一个 html 格式的字符串,他不会解析

3.value

​ 是一个独写的属性,专门用来个 表单元素 合作的

:获取一个标签元素的 value 属性的值

语法:表单元素.value

:给一个表单元素设置 value 属性的值,完全覆盖式的写入

语法:表单元素.value = '你要写入的内容'

操作元素的属性 - 原生属性

​ 原生属性:元素自己本身就带有的属性

​ 每个元素都有的 id

img 标签有的 src 属性

...

特别说明 : class (类) 属性不行

​ 原生属性直接操作就可以了

:元素.你要读取的属性名

:元素.你要写入的属性名 = '你要写入的值'

1.操作原生属性的 id 属性

​ 获取元素

var div = documnet.querySelector('div')

​ 设置 id 属性的值

console.log(div.id)

​ 把 div 元素的 id 名称设置为 box

div.id = 'box'

2.操作原生属性 src 属性

​ 获取元素

var img = documnet.querySelector('img')

​ 设置 src 属性

console.log(img.src)

​ 给 img 标签的 src 属性换一下地址

img.src = '地址'

3.操作原生属性 type 属性

​ 获取元素

inp 这个变量代表着 input 这个元素

var inp = document.querySelector('input')

​ 设置 type 属性

console.log(inp.type)

​ 把这个 input 元素的 type 属性设置为 password

inp.type = 'password'

操作元素属性 - 自定义属性

​ 自定义属性:元素本身不带有的属性

​ 是我们自己定义的属性

​ 我们想在元素身上写上这些属性

1.setAttribute()

作用: 给元素设置一个自定义属性

语法: 元素.setAttribute(你要设置的属性名,你要设置的属性值)

​ 设置的时候不管你写的是什么数据类型,到了元素身上的时候就 会被自动转换为 string 类型

2.getAttribute()

作用: 获取元素的属性(可以获取原生属性,也可以获取自定义属性)

语法:元素.getAttribute(你要获取的属性名)

返回值:这个属性的值

​ 获取到的所有数据都是 string 数据类型

3.removeAttribute()

作用 :删除元素的属性

语法 :元素.removeAttribute(你要删除的属性名)

代码

0.获取元素

var div =document.querySelector('div')

1.给元素设置自定义属性

div.setAttribute('hello','world')

div.setAttribute('num',10) (设置的时候赋值了一个 number 数据类型)

2.获取元素的属性

var res = div.getAttribute('hello')

console.log(res)

var res2 = div.getAttribute('num') (获取元素身上叫做 num 的属性的值)

console.log(res2)

3.删除元素属性

div.removeAttribute('num') (删除元素身上的 num 这个属性)

div.removeAttribute('hello') (删除元素身上的 hello 这个属性)

div.removeAttribute('class') (删除元素身上的 class 这个属性)

操作元素属性 - 类名

​ 专门用来操作元素类名的一个属性

​ 因为 classJS 里面有特殊含义

​ 所以我们操作类名使用 className 这个属性

1.className

​ 是一个读写的属性

:获取元素的类名

​ 有多少类名获取多少个类名,以字符串的形式

语法:元素.className

:设置元素的类名

​ 完全覆盖式的写入

语法:元素.className = '你要设置的类名'

​ 我想追加一个类名

​ 就是在原有的基础上添加一个类名

​ 可以使用 += 符号操作,并且在前面多添加一个 空格,和之前的类名隔开

0.获取元素

var div = document.querySelector('div')

1.获取元素的类名

var cn = div.className

console.log(cn) (以字符串的形式获取到了元素 class 属性的所有值)

2.设置元素的类名

div.className = 'box1 box2' (给元素设置两个类名,分别是 box1 和 box2)

3.追加一个类名

​ 等价于 div.className = div.className + 'box1'

div.className += 'box1' (是不是追加一个类名?)

​ 你原先的类名是 'a b c' + 'box1' === 'a b cbox1'

​ 使用的时候要多加一个空格,把他们隔开

操作元素属性 - 样式

​ 操作元素的 css 样式

1.style 属性

作用: 获取到元素所有可设置样式,值是一个对象

语法:元素.style

内容:是一个对象,里面有所有的元素可设置样式

​ 但是有值只有 行内样式

​ 想读取元素的样式

​ 直接从对象中获取就可以了

​ 能获取到的值,是带有单位的

​ 能得到的值只有行内样式,非行内样式设置的值 style 拿不到

​ 想设置元素的样式

​ 直接给对象里面的某个成员修改值就可以了

JS 设置样式只能设置行内样式

注意:当你要操作一个带有 中划线(-)的样式的时候

比如background-color,border-top,margin-top,...

​ 你操作的时候要转换写成 驼峰 的形式

backgroud-color => bcakgrounColor

border-top => borderTop

margin-top => marginTop

DOM - 操作

DOM节点

DOM 树就是由各种各样的节点组成的

根节点Document(文档),用来承载所有节点的,组成一个页面

根元素节点html 标签,页面上最大的元素节点,页面上最大的标签

普通元素节点body / head / div / ul / li / script /...

文本节点:写在页面上的文本内容,有可能被任何元素节点包裹

属性节点:写在每一个标签上的每一个属性,必须依赖于元素存在

注释节点:单独书写的一个节点,表示注释内容,不显示在页面上

节点操作:对这些节点进行增删改查

获取节点的操作

​ 获取某一个元素节点的相关节点

1.childNodes 属性

作用:获取到一个元素节点下所有的 子节点

语法:元素.childNodes

得到:是一个伪数组,里面是所有的 子节点

2.children 属性

作用:获取到一个元素节点下所以的 子元素节点

语法:元素.children

得到:是一个伪数组,里面是多有的 子元素节点

3.firstChild 属性

作用:获取到一个元素节点下的第一个 子节点

语法: 元素.firstChild

得到: 一个节点(有可能是任何节点)

4.firstElementChild 属性

作用: 获取到一个元素节点下的第一个 子元素节点

语法: 元素.firstElementChild

得到: 一个元素节点

5.lastChild 属性

作用: 获取到一个元素节点下的最后一个 子节点

语法: 元素.lastChild

得到: 一个节点(有可能是任何节点)

6.lastElementChild 属性

​  作用: 获取到一个元素节点下的最后一个 子元素节点

语法: 元素.lastElementChild

得到: 一个元素节点

7. previousSibling 属性

作用: 获取到一个元素节点的上一个 兄弟节点(上一个哥哥节点)

语法: 元素.previousSibling

得到: 一个节点(有可能是任何节点)

8. previousElementSibling 属性

作用: 获取到一个元素节点的上一个 兄弟元素节点(上一个哥哥元素)

语法: 元素.previousElementSibling

得到: 一个元素节点

9. nextSibling 属性

作用: 获取到一个元素节点的下一个 兄弟节点(下一个弟弟节点)

语法: 元素.nextSibling

得到: 一个节点(有可能是任何节点)

10. nextElementSibling 属性

作用: 获取到一个元素节点的下一个 兄弟元素节点(下一个弟弟元素)

语法: 元素.nextElementSibling

得到: 一个元素节点

11. parentNode 属性

作用: 获取到一个元素节点的 父节点

一般来说, 我们能作为父子关系的, 父亲一般就是元素节点

有特殊的, 但是很少, 比如 document 就可以作为父节点, 但是不是元素节点

语法: 元素.parentNode

得到: 一个节点(有可能是元素节点, 也有可能是根节点)

12. parentElement 属性

作用: 获取到一个元素的 父元素节点

语法: 元素.parentElement

得到: 一个元素节点

13. attributes 属性

作用: 获取一个元素的所有 属性节点

因为属性节点不作为独立节点存在, 必须依赖元素节点存在

所以他不和任何内容出现父子关系

语法: 元素.attributes

JavaScript 基础 学习 (一)的更多相关文章

  1. JavaScript 基础学习1-day14

    JavaScript 基础学习1 知识预览JavaScript概述二 JavaScript的基础三 JavaScript的对象BOM对象DOM对象实例练习js扩展 JavaScript概述 JavaS ...

  2. 48.javascript基础学习

    javascript基础学习:   http://www.w3school.com.cn/jsref/index.asp jS的引入方式: 1.行间事件:为某一个具体的元素标签赋予js内容,oncli ...

  3. JavaScript 基础学习(二)js 和 html 的结合方式

    第一种 使用一个标签 <script type="text/javascript"> js代码; </script> 第二种 使用 script 标签,引入 ...

  4. JavaScript 基础 学习 (四)

    JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 ​ 元素.on事件类型 = null ​ 因为赋值的关系,所以给事件赋值为 null 的时候 ​ 事件触发的时候,就没有事件处理 ...

  5. JavaScript 基础 学习(三)

    JavaScript 基础 学习(三) 事件三要素 ​ 1.事件源: 绑定在谁身上的事件(和谁约定好) ​ 2.事件类型: 绑定一个什么事件 ​ 3.事件处理函数: 当行为发生的时候,要执行哪一个函数 ...

  6. JavaScript 基础 学习 (二)

    JavaScript 基础 学习 节点属性 ​ 每一个节点都有自己的特点 ​ 这个节点属性就记录着属于自己节点的特点 1. nodeType(以一个数字来表示这个节点类型) ​ 语法:节点.nodeT ...

  7. 几张非常有意义的JavaScript基础学习思维图

    分享几张对于学习JavaScript基础知识非常有意义的图,无论你的JavaScript级别如何,“温故而知新”完全可以从这些图中得到. 推荐理由:归类非常好,非常全面 JavaScript 数组 J ...

  8. HTML JavaScript 基础学习

    HTML 中肯定会用到 JavaScript 的知识点,会点 JavaScript 的基础知识不会吃亏,其实打算去买JavaScript的教程去专门学习一下,但是交给我的时间不多了,记录一点,能会一点 ...

  9. javascript基础学习--HTML DOM

    写在前面的话:由于学校没有开过javascript这门课,所以平时用javascript时都是用到什么就去搜什么样的代码,但是在工作中有时候搜来的代码总是有那么点小问题,而当自己想去修改时,却又无从下 ...

随机推荐

  1. mysql explain的extra

    导读 extra主要有是那种情况:Using index.Using filesort.Using temporary.Using where Using where无需多说,就是使用了where筛选 ...

  2. 【Spring注解驱动开发】面试官:如何将Service注入到Servlet中?朋友又栽了!!

    写在前面 最近,一位读者出去面试前准备了很久,信心满满的去面试.没想到面试官的一个问题把他难住了.面试官的问题是这样的:如何使用Spring将Service注入到Servlet中呢?这位读者平时也是很 ...

  3. 位运算实现加减乘除四则运算(Java)

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 本文是继< ...

  4. Java工程中各种带有O的对象分类笔记

    在Java工程里面,我们总会碰到各种不同的带有O的对象, 对于一个小白来说,经常会混淆这些对象的使用场景,所以在这里mark一下,让自己的代码更加规范,但这个也是Java被诟病的地方,不同的业务需要给 ...

  5. java 加密与解密艺术

    视频来自黑马程序员公开课 对称加密之后的密文可能存在乱码,这些乱码无法识别,信息经过加密后会变成一串毫无规律的二进制串,此时再选择一种编码方式来展示,通常是 BASE64 格式的编码. 为了解决这个问 ...

  6. jvm基础知识—垃圾回收机制

    1.首先类的实例化.static.父类构造函数执行顺序 我们来看下面的程序代码: public class A { int a1 = 8; { int a3 = 9; System.out.print ...

  7. ABP(ASP.NET Boilerplate Project)快速入门

    前言 这两天看了一下ABP,做个简单的学习记录.记录主要有以下内容: 从官网创建并下载项目(.net core 3.x + vue) 项目在本地成功运行 新增实体并映射到数据库 完成对新增实体的基本增 ...

  8. web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万!

    前端学习路径 1.WEB前端快速入门 在本阶段,我们需要掌握 HTML 与 CSS 基础,当然,也包含 H5 和 C3 的新特性.这个部分内容非常简单,而且非常容易掌握.相信你也更愿意学习这个部分,毕 ...

  9. [译]高性能缓存库Caffeine介绍及实践

    概览 本文我们将介绍Caffeine-一个Java高性能缓存库.缓存和Map之间的一个根本区别是缓存会将储存的元素逐出.逐出策略决定了在什么时间应该删除哪些对象,逐出策略直接影响缓存的命中率,这是缓存 ...

  10. 浏览器的回流与重绘 (Reflow & Repaint)

    写在前面 在讨论回流与重绘之前,我们要知道: 浏览器使用流式布局模型 (Flow Based Layout). 浏览器会把HTML解析成DOM,把CSS解析成CSSOM,DOM和CSSOM合并就产生了 ...