JavaScript从基础到精通(webAPIS day01 Dom获取&属性操作)

目录

一.变量声明

二. WebApi介绍

2.1 DOM树

2.1.1  DOM 节点

三. DOM对象(重要)

        2). document

四. 获取DOM对象

五. 操作元素内容(修改对象内容)

5.2 常用属性修改:

5.3 通过style属性修改样式:

5.4 通过类名(className)修改样式

5.5 通过( classList )修改样式

六.操作表单元素属性


一.变量声明

变量声明有三个 var let 和 const:我们该使用哪个呢?

建议: const 优先,尽量使用const。const 语义化更好, 实际开发中也是,比如react框架,基本const

总结:有了变量先给const,如果发现它后面是要被修改的,再改为let

有i++,i---之类的自增自减 值就会改变,这种情况下用let  

二. WebApi介绍

组成:DOM操作页面元素,BOM控制浏览器行为

作用: 就是使用 JS 去操作 html 和浏览器 

分类:DOM (文档对象模型)、 BOM(浏览器对象模型)

 DOM(Document Object Model——文档对象模型)是用来呈现以及与任意 HTML 或 XML文档交互的API   也就是:DOM是浏览器提供的一套专门用来 操作网页内容 的功能

DOM作用 : 开发网页内容特效和实现用户交互

简言之 DOM 是用来动态修改 HTML 的,其目的是开发网页特效及用户交互。

2.1 DOM树

如下图所示,将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树,文档树直观的体现了标签与标签之间的关系。

2.1.1  DOM 节点

节点是文档树的组成部分,每一个节点都是一个 DOM 对象,主要分为元素节点、属性节点、文本节点等。

  1. 【元素节点】其实就是 HTML 标签,如上图中 headdivbody 等都属于元素节点。

  2. 【属性节点】是指 HTML 标签中的属性,如上图中 a 标签的 href 属性、div 标签的 class 属性。

  3. 【文本节点】是指 HTML 标签的文字内容,如 title 标签中的文字。

  4. 【根节点】特指 html 标签。

  5. 其它...

三. DOM对象(重要)

1.DOM对象:浏览器根据html标签生成的 JS对象

  • 所有的标签属性都可以在这个对象上面找到     
  • 修改这个对象的属性会自动映射到标签身上

2. DOM的核心思想 :把网页内容当做对象来处理

3. Document 是 DOM 里提供的一个对象,

2. document

      document 是javaScript  内置的专门用于 DOM 的对象,该对象包含了若干的属性和方法,document 是学习 DOM 的核心

<script>
  // document 是内置的对象
  // console.log(typeof document);

  // 1. 通过 document 获取根节点
  console.log(document.documentElement); // 对应 html 标签

  // 2. 通过 document 节取 body 节点
  console.log(document.body); // 对应 body 标签

  // 3. 通过 document.write 方法向网页输出内容
  document.write('Hello World!');
</script>

四. 获取DOM对象

  1. querySelector( )   获取满足条件的第一个元素

<div class="box">123</div>
<div class="box">abc</div>
const box = document.querySelector('.box')  //获取第一个

   2.   querySelectorAll( )  获取满足条件的元素集合 返回伪数组 

<ul class="nav">
    <li>测试1</li>
    <li>测试2</li>
    <li>测试3</li>
</ul>
const lis = document.querySelectorAll('ul li')
console.log(lis)

注意点:

1. document.querySelector('#nav')  括号里面就是获取选择器,和CSS获取写法一样,获取clss类名不要忘了点

2. 伪数组 获取元素 需要for循环遍历   

 <ul class="nav">
    <li>测试1</li>
    <li>测试2</li>
    <li>测试3</li>
  </ul>
const lis2 = document.querySelectorAll('.nav li')
    for (let i = 0; i < lis2.length; i++) {
      console.log(lis2[i])
 }

 4.获取DOM元素另外的方法 - (以前的版本)

    document.getElementById('nav')        专门获取元素类型节点,根据标签的 id 属性查找

    document.getElementsByClassName()     根据标签的 class 属性查找 

五. 操作元素内容(修改对象内容)

1.innerText 将文本内容添加/更新到任意标签位置,文本中包含的标签不会被解析。

2.innerHTML 将文本内容添加/更新到任意标签位置,文本中包含的标签会被解析。

<body>
  <div class="box">我是文字的内容</div>
  <script>
    // 1. 获取元素
    const box = document.querySelector('.box')

    // 2. 修改文字内容        对象.innerText 属性
    // console.log(box.innerText);      //获取文字内容
    box.innerText = '我是一个盒子'
    box.innerText = '<strong>我是一个盒子</strong>'  //没有加粗,所以innerText不解析标签

    // 3. innerHTML 解析标签 (其它和innerText都一样)
    box.innerHTML = '<strong>我是一个盒子</strong>'

  </script>
</body>

运行效果:

5.2 常用属性修改:

1.直接通过属性名修改,最简洁的语法:比如通过 src更换 图片

 最常见的属性比如: href、title、src

<script>
  // 1. 获取 img 对应的 DOM 元素
  const pic = document.querySelector('.pic')
 // 2. 修改图片对象的属性   对象.属性 = 值
  pic.src = './images/lion.webp'
  pic.width = 400;
  pic.alt = '图片不见了...'
</script>

5.3 通过style属性修改样式:

通过修改行内样式 style 属性,实现对样式的动态修改。

通过元素节点获得的 style 属性本身的数据类型也是对象,如 box.style.colorbox.style.width 分别用来获取元素节点 CSS 样式的 colorwidth 的值。         

    // 1. 获取元素
    const box = document.querySelector('.box')

    // 2. 修改样式属性 对象.style.样式属性 = '值'  别忘了跟单位
    // box.style.box.width = '400' ❌
    box.style.width = '400px'

    //注意多组单词的采取 小驼峰命名法
    // box.style.background-color = 'red'  ❌单词连写中间杠会被当成减号,所以不能这么写,这种有特殊方法:小驼峰命名法/

任何标签都有 style 属性,通过 style 属性可以动态更改网页标签的样式,如要遇到 css 属性中包含字符 - 时,要将 - 去掉并将其后面的字母改成大写,如 background-color 要写成 box.style.backgroundColor

5.4 通过类名(className)修改样式

 语法:元素.className = 'active'

    <div class="nav">123</div>
    // 1. 获取元素(document.querySelector 只选中符合的第一个元素)
    const div = document.querySelector('div')
    // 2. 添加类名  class 是个关键字 我们用 className
    div.className = 'box'
    // className 会直接覆盖以前的类名 是使用新值换旧值,
    // 如果需要添加一个类,需要保留之前的类名

效果图:修改后新类名会覆盖旧类名

5.5 通过( classList )修改样式

为了解决className 容易覆盖以前的类名,我们可以通过classList方式追加和删除类名

 <div class="box wenzi">文字</div>
  <script>
    // 通过classList添加  classList是追加和删除 不影响以前类名·1
    // 1. 获取元素
    const box = document.querySelector('.box')
    // 2. 修改样式
    // 2.1 追加类 add()  classList 类名不加点. 并且是字符串
    box.classList.add('active')

    // 2.2 删除类
    box.classList.remove('box')

    // 2.3切换类 toggle() 有还是没有,有就删掉。没有就加上
    box.classList.toggle('active')
  </script>

 注意:className   classList 因为是·通过类名操作,所以括号里类名不加点,并且是字符串

六.操作表单元素属性

 表单很多情况,也需要修改属性,比如点击眼睛,可以看到密码,本质是把表单类型转换为文本框;正常的有属性有取值的跟其他的标签属性没有任何区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值