前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS基础第二课(元素篇)

JS基础第二课(元素篇)

原创
作者头像
申小兮
发布2023-04-13 19:10:39
7130
发布2023-04-13 19:10:39
举报
文章被收录于专栏:前端开发基础前端开发基础

介绍元素前,带小伙伴们了解一下,什么是DOM?🧐

一、DOM:全称Document Object Model(文档对象模型)

1、用于HTML和XML文档的编辑接口,给文档提供一种结构化的表示方法,可以修改文档的内容和结构

2、XML 是一种标记语言类似html,被设计用来传输和存储数据

3、DOM可以把网页和脚本语言以及其他编程语言联系起来

4、DOM开发中主要用于操作元素(因此DOM与元素紧密相连)

二、获取元素的五种方式

1、根据ID获取

返回元素对象(仅获取到匹配的第一个元素的标签)

代码语言:javascript
复制
<div id="box"></div>
<div id="box"></div>
<script>
    var boxDom = document.getElementById('box')
    console.log(boxDom);
</script>

2、根据类名获取

返回元素的对象集合(类似数组),注意不是标签!需要通过循环遍历,来获取最终需要的标签

代码语言:javascript
复制
<h1 class="title">标题</h1>
<h1 class="title">标题</h1>
<script>
    var titleDom = document.getElementsByClassName('title')
    console.log(titleDom);
    for (var i = 0; i < titleDom.length; i++) {
        console.log(titleDom[i]);
    }
</script>

3、根据标签名获取

返回带有指定标签名的对象集合(类似数组),不是标签!与类名获取同样,需要通过循环遍历,来获取最终需要的标签

代码语言:javascript
复制
<p>段落</p>
<p>段落</p>
<script>
    var pDom = document.getElementsByTagName('p')
    console.log(pDom);
    for (var i = 0; i < pDom.length; i++) {
        console.log(pDom[i]);
    }
</script>

4、根据选择器获取【注意:选择器对应的符号不能漏,不能错(class对应. )、(id对应# )】

(1)获取指定元素的第一个对象

代码语言:javascript
复制
<div id="box"></div>
<script>
    var box =document.querySelector('#box')
    console.log(box);
</script>

(2)获取指定元素对象集合,一样需要循环遍历来取标签

代码语言:javascript
复制
<div id="box"></div>
<div id="box"></div>
<script>
    var box =document.querySelectorAll('#box')
    console.log(box);
    for (var i = 0; i < box.length; i++) {
        console.log(box[i]);
    }
</script>

(3)获取子级对象(querySelector也可以直接获取标签名)

代码语言:javascript
复制
<div class="demo">
    <p>段落</p>
    <p>段落</p>
</div>
<script>
    var demoArr = document.querySelectorAll('.demo p')
    console.log(demoArr);
</script>

5、根据特殊元素获取

(1)获取body

(2)获取html

代码语言:javascript
复制
<div class="demo">
    <p>段落</p>
    <p>段落</p>
</div>
<script>
    var bodyDom = document.body
    console.log(bodyDom);
    var htmlDom = document.documentElement
    console.log(htmlDom);
</script>

 三、事件(HTML DOM 事件)

1、组成

(1)事件源:触发的对象

(2)事件类型:如何触发

(3)事件处理程序:通过函数响应事件

2、三种写法(用监听按钮事件为例子)

(1)通过dom事件类型【常用】

代码语言:javascript
复制
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<script>
    var list = document.querySelectorAll('li')
    console.log(list);
    for (var i = 0; i < list.length; i++) {
        console.log(list[i]);
        list[i].onclick = function(){
            alert('点击成功')
        }
    }
</script>

(2)通过dom.addEventListener事件类型

代码语言:javascript
复制
<div class="box">点击</div>
<script>
    var divDom = document.querySelector('.box')
    console.log(divDom);
    divDom.addEventListener('click',function(){
        alert('点击成功')
    })
</script>

(3)直接在标签上编写<标签名 οnclick="方法">确定</标签名>【常用】

代码语言:javascript
复制
<body>
    <div onclick="alert('OK')">请点击</div>
</body>

代码语言:javascript
复制
<!-- 注意值是一个方法,不能漏了() -->
<div onclick="divClick()">请点击</div>
<script>
    function divClick(){
        alert('点击成功')
    }
</script>

3、其他例子:焦点离开、焦点聚集

代码语言:javascript
复制
<input type="text" onfocus="iptfoucs()">
<script>
    var inputDom = document.querySelector('input')
    inputDom.onblur = function(){
        console.log('焦点离开');
    }
    function iptfoucs(){
        console.log('焦点聚焦');
    }
</script>

四、操作元素

1、概念

JavaScript的DOM操作可以改变网页内容、结构和样式,通过利用Dom操作元素来改变元素里面的内容、属性等

注意:事件和操作元素都是对标签进行操作的

2、改变获取元素的内容

(1)修改获取文本内容

代码语言:javascript
复制
<h1>标题</h1>
<button>修改</button>
<script>
    var title = document.querySelector('h1')
    console.log(title);
    var btn = document.querySelector('button')
    btn.onclick = function(){
        title.innerText = '修改成功'
    }
</script>

(2)修改获取标签文本

代码语言:javascript
复制
<h1>标题</h1>
<button>修改</button>
<script>
    var title = document.querySelector('h1')
    console.log(title);
    var btn = document.querySelector('button')
    btn.onclick = function(){
        title.innerHTML = '<a href="">修改成功</a>'
        console.log(title.innerHTML);//<a href="">修改成功</a>
        console.log(title.innerText);//修改成功
    }
</script>

3、修改获取元素属性(dom.属性名 = 修改值)

代码语言:javascript
复制
<h1 title="我是标题">标题</h1>
<button>修改属性</button>
<script>
    var h1Dom =document.querySelector('h1')
    var btn = document.querySelector('button')
    btn.onclick =function(){
        h1Dom.title='我不是标题'
    }
</script>

4、修改样式属性

(1)格式:dom.style.样式属性 = 值

(2)适用于较少的样式修改

(3)复合型的属性需要用驼峰的编写方法,否则会出错

代码语言:javascript
复制
<div></div>
<button>修改属性</button>
<script>
    var divDom = document.querySelector('div')
    var btn = document.querySelector('button')
    btn.onclick = function(){
        divDom.style.backgroundColor = 'red'
        divDom.style.width = '200px'
    }
</script>

修改前:

修改后:

5、使用className修改样式属性

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .default {
        width: 100px;
        height: 100px;
        background-color: skyblue;
        color: white;
        margin-bottom: 10px;
      }
      .active {
        background-color: red;
        color: yellowgreen;
      }
    </style>
  </head>
  <body>
    <div class="default">div</div>
    <div class="default">div</div>
    <div class="default">div</div>
    <button>点击修改</button>
    <script>
      var divArr = document.querySelectorAll('.default')
      var  btn = document.querySelector('button')
      btn.onclick =function(){
        for(var i =0;i<divArr.length;i++ ){
            divArr[i].className = 'default active'
        }
      }
</script>
  </body>
</html>

修改前:

修改后:

6、HTML标签自定义属性

(1)目的:为了保存属性并使用的数据

(2)设置属性:setAttribute('属性名','值')

(3)获取属性:getAttribute('属性名')

代码语言:javascript
复制
<h1 index="0">我是标签</h1>
<script>
    var h1 = document.querySelector('h1')
    h1.setAttribute('idid',666)
    console.log(h1.getAttribute('idid'));
    console.log(h1.getAttribute('index'));
</script>

五、节点操作

1、节点层级

代码语言:javascript
复制
<div id="box">
        <div id="box1"></div>
        <div id="box2"></div>
        <div id="box3"></div>
</div>
<script>
        // 获取最近的父节点
        var box1 = document.querySelector('#box1')
        console.log(box1.parentNode);
        // 获取所有的子节点
        var box = document.querySelector('#box')
        console.log(box.childNodes);
        // 获取第一个子节点
        console.log(box.firstElementChild);
        // 获取最后一个子节点
        console.log(box.lastElementChild);
        // 上一个兄弟
        var box2 = document.querySelector('#box2')
        console.log(box2.previousElementSibling);
        // 下一个兄弟
        console.log(box2.nextElementSibling);
</script>

2、创建节点

document.createElement("标签名")

3、添加节点

添加的位置.appendChild(添加的节点)

4、删除节点

选择.removeChild(节点)

5、复制节点/克隆节点

cloneNode(true):克隆整个节点包括里面的内容 cloneNode(false):克隆节点不包括里面的内容

代码语言:javascript
复制
<ul>
        <li>1</li>
</ul>
<button class="add">添加</button>
<button class="del">删除</button>
<script>
        var btn1 = document.querySelector('.add')
        var btn2 = document.querySelector('.del')
        var ul = document.querySelector('ul')
        btn1.onclick = function(){
            var newli = document.createElement('li')//创建节点
            var liArr = document.querySelectorAll('li')
            for (var i = 0; i <= liArr.length; i++) {
                newli.innerHTML = i+1;
            }
            ul.appendChild(newli);//添加节点
        }
        btn2.onclick = function(){
            ul.removeChild(ul.lastElementChild);//删除ul的最后一个孩子
        }
 
        //克隆节点
        var newNode = document.createElement('div')//创建节点
        newNode.innerHTML = '你好'//修改文本内容
        var cloneDom1 = newNode.cloneNode(true)
        var cloneDom2 = newNode.cloneNode(false)
        console.log(cloneDom1);
        console.log(cloneDom2);
</script>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、DOM:全称Document Object Model(文档对象模型)
  • 二、获取元素的五种方式
    • 1、根据ID获取
      • 2、根据类名获取
        • 3、根据标签名获取
          • 4、根据选择器获取【注意:选择器对应的符号不能漏,不能错(class对应. )、(id对应# )】
            • 5、根据特殊元素获取
            •  三、事件(HTML DOM 事件)
              • 1、组成
                • 2、三种写法(用监听按钮事件为例子)
                  • 3、其他例子:焦点离开、焦点聚集
                  • 四、操作元素
                    • 1、概念
                      • 2、改变获取元素的内容
                        • 3、修改获取元素属性(dom.属性名 = 修改值)
                          • 4、修改样式属性
                            • 5、使用className修改样式属性
                              • 6、HTML标签自定义属性
                              • 五、节点操作
                                • 1、节点层级
                                  • 2、创建节点
                                    • 3、添加节点
                                      • 4、删除节点
                                        • 5、复制节点/克隆节点
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档