JavaScript-Web学习笔记01

这篇具有很好参考价值的文章主要介绍了JavaScript-Web学习笔记01。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Web APIs

1、Web API

Web API 是浏览器提供的一套操作浏览器功能页面元素API(BOM 和 DOM)。

2、总结

  1. API 是为我们提供的一个接口,帮助我们实现某种功能
  2. Web API 主要是针对浏览器提供的接口,主要针对浏览器做交互效果。
  3. Web API 一般都有输入和输出(函数的传参和返回值),Web API 很多都是方法(函数)

二、DOM

1、DOM

文档对象模型(Document Object Model,简称 DOM),是W3C 组织推荐的处理可拓展标记语言(HTML 或者 XML)的标准编程接口

DOM 树
  • 文档:一个页面就是一个文档,DOM 中使用 document 表示
  • 元素:页面中的所有标签都是元素,DOM 中使用 element 表示
  • 节点:网页中的所有内容都是节点(标签、属性、文本、注释等),DOM 中使用 node 表示

DOM 把以上内容都看作是对象

2、获取元素

根据 ID 获取

使用 getElementById() 方法可以获取带有 ID 的元素对象。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <div id="time">2024/3/15</div>

   <script>
       // 1.因为文档页面是从上往下加载,即先得有标签,所以script写在标签的下面
       // 2.参数 id 是大小写敏感的字符串
       // 3.返回的是一个元素对象
       var timer = document.getElementById('time');
       console.log(timer);
       console.log(typeof timer);
       // 4.console.dir 打印返回的对象 更好地查看里面的属性和方法
       console.dir(timer)
   </script>
</body>
</html>

结果:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

根据标签名获取

使用 getElementsByTagName() 方法可以返回带有指定标签名的对象的集合

还可以获取某个(父元素)内部所有指定标签名的子元素:
element.getElementsByTagName('标签名');
注意:父元素必须是单个对象(必须指明是哪一个元素对象),获取的时候不包括父元素自己。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <ul>
       <li>知否知否,应是绿...红...1</li>
       <li>知否知否,应是绿...红...2</li>
       <li>知否知否,应是绿...红...3</li>
       <li>知否知否,应是绿...红...4</li>
   </ul>
   <ol id="ol">
       <li>十二生肖</li>
       <li>十二生肖</li>
       <li>十二生肖</li>
       <li>十二生肖</li>
   </ol>

   <script>
       // 1.返回的是 获取过来的元素的对象的集合 以伪数组的形式存储的
       var lis = document.getElementsByTagName('li');
       console.log(lis);
       console.log(lis[0]);
       // 2.依次打印里面的元素对象可以采取遍历的方式
       for (var i = 0; i < lis.length; i++) {
           console.log(lis[i]);
       }
       // 3.如果页面中只有一个li 返回的还是伪数组的形式
       // 4.如果页面中没有这个元素 返回的是还是空的伪数组的形式
       // 5.element.getElementsByTagName('标签名'); 父元素必须是指定的单个元素
       // var ol = document.getElementsByTagName('ol'); // [ol]
       // console.log(ol[0].getElementsByTagName('li'));
       var ol = document.getElementById('ol');
       console.log(ol.getElementsByTagName('li'));
   </script>
</body>
</html>

结果:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

通过 HTML5 新增的方法获取
document.getElementsByClassName('类名'); // 根据类名返回元素对象集合
document.querySelector('选择器'); // 根据指定选择器返回第一个元素对象
document.querySelectorAll('选择器'); // 根据指定选择器返回

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <div class="box">box1</div>
   <div class="box">box2</div>
   <div id="nav">
       <ul>
           <li>首页</li>
           <li>产品</li>
       </ul>
   </div>

   <script>
       // 1.getElementsByClassName 根据类名获得某些元素集合
       var box = document.getElementsByClassName('box'); 
       console.log(box);
       // 2.querySelector 返回指定选择器的第一个元素对象 里面的选择器需要加符号 '.' / '#'
       var firstBox = document.querySelector('.box');
       console.log(firstBox);
       var nav = document.querySelector('#nav');
       console.log(nav);
       var li = document.querySelector('li');
       console.log(li);
       // 3.querySelectorAll() 返回指定选择器的所有元素对象集合
       var allBox = document.querySelectorAll('.box');
       console.log(allBox);
       var lis = document.querySelectorAll('li')
       console.log(lis);
   </script>
</body>
</html>

结果:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

获取特殊元素(body , html)

获取body元素
document.body // 返回body元素对象

获取html元素
document.documentElement // 返回html元素对象

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <script>
       // 1. 获取body元素
       var bodyEle = document.body;
       console.log(bodyEle);
       console.dir(bodyEle)
       // 2. 获取html元素
       // var htmlEle = document.html;
       var htmlEle = document.documentElement;
       console.log(htmlEle);
   </script>
</body>
</html>

结果:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

3、事件基础

事件三要素

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <button id="btn">chop</button>
   <script>
       // 点击一个按钮,弹出对话框
       // 1. 事件是有三部分组成 事件源 事件类型 事件处理程序 ————事件三要素
       // (1) 事件源:事件被触发的对象
       var btn = document.getElementById('btn');
       // (2) 事件类型 如何触发 什么事件 比如:鼠标点击(onclick) 还是鼠标经过 还是键盘按下
       // (3) 事件处理程序 通过一个函数赋值的方式完成
       btn.onclick = function() {
           alert('That is a male dog!');
       }
   </script>
</body>
</html>

结果:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

执行事件的步骤
  1. 获取事件源
  2. 注册事件(绑定事件)
  3. 添加事件处理程序(采取函数赋值形式)
常见的鼠标事件
鼠标事件 触发事件
onclick 鼠标点击左键触发
onmouseover 鼠标经过触发
onmouseout 鼠标离开触发
onfocus 获得鼠标焦点触发
onblur 失去鼠标焦点触发
onmousemove 鼠标移动触发
onmouseup 鼠标弹起触发
onmousedown 鼠标按下触发

4、操作元素

改变元素内容

element.innerText
从起始位置到终止位置的内容,但去除 html 标签,同时空格和换行也会去掉

elememt.innerHTML
起始位置到终止位置的全部内容,包括 html 标签,同时保留空格和换行

示例一:

<!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>
       div, 
       p {
           width: 300px;
           height: 30px;
           line-height: 30px;
           color: #fff;
           background-color: pink;
       }
   </style>
</head>
<body>
   <button>显示当前系统时间</button>
   <div>某个时间</div>
   <p>123</p>
   <script>
       // 当我们点击了按钮,div里面的文字发生变化
       // 1.获取元素
       var btn = document.querySelector('button')
       var div = document.querySelector('div')
       // 2.注册事件
       btn.onclick = function() {
           // div.innerText = '2024-03-17';
           div.innerText = getDate();
       }
       function getDate() {
           var date = new Date();
           var year = date.getFullYear();
           var month = date.getMonth() + 1;
           var dates = date.getDate();
           var arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
           var day = date.getDay();
           return '今天是:' + year + '年' + month + '月' + dates + '日' + arr[day];
       }
       // 元素可以不用添加事件
       var p = document.querySelector('p');
       p.innerText = getDate();
   </script>
</body>
</html>

结果一:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

示例二:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <div></div>
   <p>
       i am god!
       <span>123</span>
   </p>
   <script>
       // innerText 和 innerHTML 的区别
       // 1.innerText 不识别html标签 非标准 去除换行和空格
       var div = document.querySelector('div');
       // div.innerText = '<strong>Today is</strong> 2024';
       // 2.innerHTML 识别html标签 W3C标准 保留换行和空格
       div.innerHTML = '<strong>Today is</strong> 2024';
       // 这两个元素是可读写的 可以获取元素里面的内容
       var p = document.querySelector('p');
       console.log(p.innerText);   
       console.log(p.innerHTML);   
   </script>
</body>
</html>

结果二:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

常用元素的属性操作
innerText、innerHTML 改变元素内容
src、href
id、alt、title

示例:

<!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>
       img {
           width: 300px;
       }
   </style>
</head>
<body>
   <button id="pic1">photo1</button>
   <button id="pic2">photo2</button>
   <img src="./images/网图1.jpg" alt="" title="网图1">

   <script>
       // 修改元素属性 src
       // 1.获取元素
       var pic1 = document.getElementById('pic1');
       var pic2 = document.getElementById('pic2');
       var img = document.querySelector('img');
       // 2.注册事件
       pic2.onclick = function() {
           img.src = 'images/网图2.jpg';
           img.title = '网图2';
       }
       pic1.onclick = function() {
           img.src = 'images/网图1.jpg';
           img.title = '网图1';
       }
   </script>
</body>
</html>
表单元素的属性操作

利用 DOM 可以操作如下表单元素的属性:
type、value、checked、selected、disable

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <button>按钮</button>
   <input type="text" value="输入内容">
   <script>
       // 1.获取元素
       var btn = document.querySelector('button');
       var input = document.querySelector('input');
       // 2.注册事件 处理程序
       btn.onclick = function() {
           // input.innerHTML = '已点击'; 这个是普通盒子比如div标签里面的内容
           // 表单里面的值 文字内容是通过 value 来修改的
           input.value = '已点击';
           // 如果想要某个表单被禁用,不能再点击——disable
           // btn.disabled = true;
           this.disabled = true;
           // this 指向的是事件函数的调用者
       }
   </script>
</body>
</html>

结果:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

样式属性操作
element.style 行内样式操作
elemen.className 类名样式操作
  • 注意:
  1. JS 里面的样式采取驼峰命名法 比如:fontSize、backgroundColor
  2. JS 修改 style 样式操作,产生的是行内样式,css 权重比较高
  3. 如果样式修改较多,可以采取操作类名方式更改元素样式
  4. class因为是个保留字,因此使用className来操作元素类名属性
  5. className 会直接更改元素的类名,会覆盖原先的类名

示例一:

<!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>
       div {
           width: 200px;
           height: 200px;
           background-color: pink;
       }
   </style>
</head>
<body>
   <div></div>
   <script>
       var div = document.querySelector('div');
       div.onclick = function() {
           // div.style 里面的属性采取 驼峰命名法
           this.style.backgroundColor = 'purple';
           this.style.width = '250px';
       }
   </script>
</body>
</html>

示例二:

<!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>
       div {
           width: 100px;
           height: 100px;
           background-color: pink;
       }
       .change {
           background-color: purple;
           color: #fff;
           font-size: 25px;
           margin-top: 100px;
       }
   </style>
</head>
<body>
   <div class="first">文本</div>
   <script>
       // 1.使用 element.style 获取修改元素样式 如果 样式较少 或者 功能简单的情况下 使用
       var test = document.querySelector('div');
       test.onclick = function() {
           // this.style.backgroundColor = 'purple';
           // this.style.color = '#fff';
           // this.style.fontSize = '25px';
           // this.style.marginTop = '100px';
               // 让当前元素的类名改为了 change
       // 2.可以通过修改元素样式的className更改元素的样式适合于样式较多或者功能复杂的情况
       // 3.保留原先的类名
           // this.className = 'change';
           this.className = 'first change';
       }
   </script>
</body>
</html>
排他思想
  1. 所有元素全部清除样式
  2. 给当前元素设置样式
  3. 注意顺序不能颠倒

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <button>按钮1</button>
   <button>按钮2</button>
   <button>按钮3</button>
   <button>按钮4</button>
   <button>按钮5</button>

   <script>
       // 获取所有按钮元素
       var btns = document.getElementsByTagName('button');
       // btns得到的是伪数组
       for (var i = 0; i < btns.length; i++) {
           btns[i].onclick = function() {
               // (1) 把所有的按钮背景颜色去掉
               // (2) 然后才改变当前的背景颜色
               for (var i = 0; i < btns.length; i++) {
                   btns[i].style.backgroundColor = '';
               }
               this.style.backgroundColor = 'pink';
           }
       }
   </script>
</body>
</html>
自定义属性的操作
  1. 获取属性值

    • element.属性 获取属性值
    • element.getAttribute(‘属性’);

    区别:

    • element.属性 获取内置属性值(元素本身自带的属性)
    • element.getAttribute(‘属性’); 主要获得自定义的属性(标准)
  2. 设置属性值

    • element.属性 = ‘值’ 设置内置属性值
    • element.setAttribute(‘属性’, ‘值’);

    区别:

    • element.属性 设置内置属性值
    • element.setAttribute(‘属性’); 主要获得自定义的属性(标准)
  3. 移除属性

    • element.removeAttribute(‘属性’);

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <div id="demo" index="1" class="nav"></div>
   <script>
       var div = document.querySelector('div');
       // 1.获取元素的属性值
       // (1) element.属性
       console.log(div.id);
       // (2) element.getAttribute('属性')
       console.log(div.getAttribute('id'));
       console.log(div.getAttribute('index'));
       // 2.设置元素的属性值
       // (1) element.属性 = '值'
       div.id = 'test';
       div.className = 'navs';
       // (2) element.setAttribute('属性', '值') 主要针对于自定义
       div.setAttribute('index', 2);
       div.setAttribute('class', 'footer');
       // 3.移除属性
       div.removeAttribute('index');
   </script>
</body>
</html>
H5自定义属性

自定义属性的目的:为了保存并使用数据,有些数据可以保存到页面中而不用·保存到数据库中。

自定义属性获取是通过getAttribute(‘属性’) 获取。

  1. 设置H5自定义属性
    H5规定自定义属性data-开头作为属性名并且赋值。
    比如 <div data-index='1'></div>
    或者使用 JS 设置
    element.setAttribute('data-index', 2);
  2. 获取H5自定义属性
    • 兼容性获取 element.getAttribute(‘index-index’);
    • H5新增 element.dataset.index或者 element.dataset==[‘index’]== ie 11 才开始支持

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <div getTime="20" data-index="2" data-list-name="andy"></div>
   <script>
       var div = document.querySelector('div');
       console.log(div.getAttribute('getTime'));
       div.setAttribute('data-time', 20);
       console.log(div.getAttribute('data-index'));
       console.log(div.getAttribute('data-list-name'));
       // H5新增的获取自定义属性的方法 只能获取 data 开头的
       // dataset 是一个集合,里面存放了所有以data开头的自定义属性
       console.log(div.dataset);
       console.log(div.dataset.index);
       console.log(div.dataset['index']);
       // 如果自定义属性里面有多个-连接的单词,获取的时候采取 驼峰命名法
       console.log(div.dataset.listName);
       console.log(div.dataset['listName']);
   </script>
</body>
</html>

结果:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

5、节点操作

节点概述

一般地,节点至少有nodeType(节点类型)、nodeName(节点名称)、nodeValue(节点值)这三个基本属性。

  • 元素节点 nodeType 为 1
  • 属性节点 nodeType 为 2
  • 文本节点 nodeType 为 3(文本节点包含文字、空格、换行等)
节点层级

利用 DOM 数可以把节点划分为不同的层级关系,常见的是父子兄层级关系

  1. 父级节点
    node.parentNode
    示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div>我是div</div>
        <span>我是span</span>
        <ul>
            <li>我是li</li>
            <li>我是li</li>
            <li>我是li</li>
            <li>我是li</li>
        </ul>
        <div class="demo">
            <div class="box">
                <span class="erweima">x</span>
            </div>
        </div>
    
        <script>
            // 1.父节点 parentNode
            var erweima = document.querySelector('.erweima');
            // var box = document.querySelector('.box');
            // 如果找不到父节点就返回 null
            console.log(erweima.parentNode);
        </script>
    </body>
    </html>
    

    结果:
    JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

  1. 子节点

    • parentNode.childNodes(标准)

      parentNode.childNodes 返回包含指定节点的子节点的集合,该集合为即时更新的集合。

      注意:返回值里面包含了所有的子节点,包括元素节点,文本节点等。
      如果只想要获得里面的元素节点,则需要专门处理:

      var ul = document.querySelector('ul');
      for (var i = 0; i < ul.childNodes.length; i++) {
          if (ul.childNodes[i].nodeType == 1)
          	// ul.childNodes[i] 是元素节点
              console.log(ul.childNodes[i]);
      }
      
    • parentNode.children(非标准)

      parentNode.children 是一个只读属性,返回所有的子元素节点。它只返回子元素节点,其余节点不返回

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div>我是div</div>
        <span>我是span</span>
        <ul>
            <li>我是li</li>
            <li>我是li</li>
            <li>我是li</li>
            <li>我是li</li>
        </ul>
        <ol>
            <li>我是li</li>
            <li>我是li</li>
            <li>我是li</li>
            <li>我是li</li>
        </ol>
        <div class="demo">
            <div class="box">
                <span class="erweima">x</span>
            </div>
        </div>
    
        <script>
            // DOM 提供的方法(API)获取
            var ul = document.querySelector('ul');
            var lis = ul.querySelectorAll('li');
            // 1.子节点 cjildNodes 获取所有的子节点,包含:元素节点、文本节点等等
            console.log(ul.childNodes);
            console.log(ul.childNodes[0].nodeType);
            console.log(ul.childNodes[1].nodeType);
            // 2.children 获取所有的子元素节点
            console.log(ul.children);
        </script>
    </body>
    </html>
    

    结果:
    JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习
    .

    • parentNode.firstChild
      firstChild 返回第一个子节点,找不到则返回null。同样包含所有的节点。

    • parentNode.lastChild
      lastChild 返回最后一个子节点,找不到则返回null。同样包含所有的节点。

    • parentNode.firstElementChild

      firstElementChild 返回第一个子节点,找不到则返回null.

    • parentNode.lastElementChild
      lastElementChild 返回最后一个子节点,找不到则返回null

注意:上面两种方法都有兼容性问题,IE9 以上才支持。

示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <ol>
            <li>我是li1</li>
            <li>我是li2</li>
            <li>我是li3</li>
            <li>我是li4</li>
        </ol>
    
        <script>
            var ol = document.querySelector('ol');
            // 1.firstChild 第一个子节点
            console.log(ol.firstChild);
            console.log(ol.lastChild);
            // 2.firstElementChild 返回第一个子元素节点
            console.log(ol.firstElementChild);
            console.log(ol.lastElementChild);
            // 3.实际开发的写法 既没有兼容性问题又可以返回第一个子元素
            console.log(ol.children[0]);
            console.log(ol.children[ol.children.length - 1]);
        </script>
    </body>
    </html>
    ```

    结果:
    <img src="C:/Users/lenvovo/Pictures/JS笔记/06-03.png" style="zoom:80%;" />

  1. 兄弟节点

    • node.nextSibling
      nextSibling 返回当前元素的下一个兄弟节点,找不到则返回null。同样包含所有的节点。
    • node.previousSibling
      previousSibling 返回当前元素的上一个兄弟节点,找不到则返回null。同样包含所有的节点。
    • node.nextElementSibling
      nextElementSibling 返回当前元素的下一个兄弟元素节点,找不到则返回null。
    • node.previousElementSibling
      previousElementSibling 返回当前元素的上一个兄弟元素节点,找不到则返回null。

    注意:上面两种方法都有兼容性问题,IE9 以上才支持。

    解决问题:(封装函数)

    function getElementSibling(element) {
        var el = element;
        while (el == el.nextSibling) {
            if (el.nodeType === 1) {
                return el;
            }
        }
        return 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>
    </head>
    <body>
        <div>我是div</div>
        <span>我是span</span>
        <script>
            var div = document.querySelector('div');
            // nextSibling 下一个兄弟节点 包含:元素节点和文本节点等
            console.log(div.nextSibling);
            console.log(div.previousSibling);
            // nextElementSibling 下一个兄弟元素节点
            console.log(div.nextElementSibling);
            console.log(div.previousElementSibling);
        </script>
    </body>
    </html>
    

    结果:
    JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习

创造节点

document.createElement('tagName')

添加节点
  1. node.appendChild(child)
    node.appendChild() 方法将一个节点添加到指定父节点列表末尾。类似于 css 里面的 after 伪元素。
  2. node.insertBefore(child, 指定元素)
    node.insertBefore() 方法将一个节点添加到父节点的指定子节点前面。类似于 css 里面的 before 伪元素。
删除节点

node.removeChild(child)
node.removeChild() 方法从 DOM 中删除一个子节点,返回删除的节点。

示例;

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <button>删除</button>
   <ul>
       <li>熊大</li>
       <li>熊二</li>
       <li>光头强</li>
   </ul>

   <script>
       var ul = document.querySelector('ul');
       var btn = document.querySelector('button');
       // ul.removeChild(ul.children[0]);
       // 点击按钮删除子节点
       btn.onclick = function() {
           if (ul.children.length == 0) {
               this.disabled = true;
           } else {
               ul.removeChild(ul.children[0]);
           }
       }
   </script>
</body>
</html>
复制节点(克隆节点)

node.cloneNode()
node.cloneNode() 方法返回调用该方法节点的一个副本,也称为克隆节点/拷贝节点

注意

  1. 如果括号参数为空或者为false,则是浅拷贝,即只克隆复制节点本身,不克隆里面的子节点。
  2. 如果括号参数为true,则是深度拷贝,会复制节点本身以及里面所有的子节点。
三种动态创建元素区别
  • document.write()
  • element.innerHTML()
  • document.createElement()

区别:

  1. document.write 是直接将内容写入页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘
  2. innerHTML 是将内容写入某个 DOM 节点,不会导致页面全部重绘
  3. innerHTML 创建多个元素效率更高(不要拼接字符串,采取数组形式拼接),结构稍微复杂;
  4. createElement() 创建多个元素效率稍微低一点,但是结构更清晰

示例:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <button>点击</button>
   <p>abc</p>
   <div class="inner"></div>
   <div class="create"></div>
   <script>
       // 1. 如果页面文档流加载完毕,再调用这句话会导致页面重绘
       // var btn = document.querySelector('button');
       // btn.onclick = function() {
       //     document.write('<div>123</div>');
       // }
       // 2
       var inner = document.querySelector('.inner');
       inner.innerHTML = '<a href="#">百度</a>';
       inner.innerHTML = arr.join('');
       // 3
       var create = document.querySelector('.create');
       var a = document.createElement('a');
       create.appendChild(a);
   </script>
</body>
</html>

结果:
JavaScript-Web学习笔记01,JavaScript,前端,javascript,学习文章来源地址https://www.toymoban.com/news/detail-845606.html

到了这里,关于JavaScript-Web学习笔记01的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前端学习笔记2】javaScript基础

    是一种运行在客户端(服务器的编程语言) javacript分为行内JavaScript,内部JavaScript,外部JavaScript 内部JavaScript 直接写在html中body里面 alert(“hello,world”) 我们将script放在html文件的地步附近的原因是浏览器会按照代码在文件中的顺序加载html 如果先加载的JavaScript期望修改其

    2024年01月22日
    浏览(37)
  • 前端学习笔记:JavaScript基础语法(ECMAScript)

    此博客参考b站:【黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程】https://www.bilibili.com/video/BV1Y84y1L7Nn?p=76vd_source=06e5549bf018e111f4275c259292d0da 这份笔记适用于已经学过一门编程语言(最好是C语言)的同学,如果你没有

    2024年02月16日
    浏览(47)
  • 前端学习心得笔记之三(JavaScript篇)

    JavaScript一种运行在客户端(浏览器)上的解释性弱语言,是前端的重中之重,在计算机刚刚兴起的那个时代,这个由十天仓促编成的语言发展到现在也是令人吹嘘。 文件引用 在一个单独的js文件中也可以编写JavaScript代码,然后在HTML文件使用script标签进行引用以下为演示 m

    2024年04月23日
    浏览(49)
  • 【JavaEE初阶】前端第四节.JavaScript入门学习笔记

    作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java测试开发 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 前言 一、前置知识  1、JS 和 HTML 和 CSS 之间的关系 1.2 JS 的书写形式 1.2.1 内嵌式 1.2.2 行内式  1.2.3 外部式 1.2.4 扩展 1.2

    2024年02月08日
    浏览(51)
  • JAVA前端快速入门基础_javascript入门(01)

    1.JS是什么 JavaScript是一门跨平台,面向对象的脚本语言(即不需要编译,可以直接通过浏览器进行解释)。JS和Java是两门完全不相同的语言,但是基础的语法是类似的 2.JS的引入方式 JS如何在前端代码里面体现作用。有两种方式,一种是内部脚本,一种是外部脚本 注意,JS代码必

    2024年04月27日
    浏览(51)
  • 前端架构师之01_JavaScript_Ajax

    1.1 Web服务器 Web服务器又称为网站服务器,主要用于提供网上信息浏览服务。 常见的Web服务器软件有Apache HTTP Server(简称Apache)、Nginx等。 浏览器与服务器交互 在Web服务器中,请求资源又分为静态资源和动态资源。 静态资源的特点:只要服务器没有修改这些文件,客户端每

    2024年02月07日
    浏览(49)
  • web前端框架Javascript之JavaScript 异步编程史

    早期的 Web 应用中,与后台进行交互时,需要进行 form 表单的提交,然后在页面刷新后给用户反馈结果。在页面刷新过程中,后台会重新返回一段 HTML 代码,这段 HTML 中的大部分内容与之前页面基本相同,这势必造成了流量的浪费,而且一来一回也延长了页面的响应时间,总

    2024年02月14日
    浏览(58)
  • Web前端-JavaScript

    目录 1 概述 2 HTML嵌入JS代码三种方式 2.1 第一种方式 2.2 第二种方式 2.3 第三种方式 3 变量 4 数据类型 4.1 概述 4.2 Number数据类型  4.3 几个值得注意的函数 4.4 Boolean数据类型  4.5 String数据类型 4.6 关于Object类型 4.7 NaN、undefined、null的区别 4 函数 5 事件 5.1 JS中有哪些常用的事件

    2024年02月09日
    浏览(63)
  • web前端Javascript—7道关于前端的面试题

    本文主要是web前端Javascript—的面试题,附上相关问题以及解决答案,希望对大家web前端Javascript闭包的学习有所帮助。 每个JavaScript 程序员都必须知道闭包是什么。在 JavaScript 面试中,你很可能会被问到的问题 以下是 7 个有关 JavaScript的面试题,比较有挑战性。不要查看答案

    2024年02月03日
    浏览(101)
  • 2023年web前端开发之JavaScript进阶(一)

    接上篇博客进行学习,通俗易懂,详细 博客地址: 2023年web前端开发之JavaScript基础(五)基础完结_努力的小周同学的博客-CSDN博客 学习 作用域 、变量提升、 闭包 等语言特征,加深对 JavaScript 的理解,掌握变量赋值、函数声明的简洁语法, 降低代码的冗余度 。 理解作用域对程序

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包