Web API

news2024/12/23 13:25:41

DOM API

1、选中页面元素

let elem = document.querySelector('CSS选择器');

console.log(elem);

console.dir(elem);

2、事件

鼠标点击事件 onclick  鼠标移动事件 onmousemove 等等

事件源 .box,事件类型 onlick,事件处理方式 alert('hello')

let div = document.querySelector('.box');
div.onclick = function(){
    alert('hello');
}

3、操作元素

(1)获取/修改元素内容:innerHTML

   <div class="one">abc</div>
   <script>
    let div = document.querySelector('.one');
    div.onclick = function(){
        console.log( div.innerHTML);
        div.innerHTML += 'd';
        console.log( div.innerHTML);
    } 
   </script>

(2)获取/修改元素属性

   <img src="mei.jpg" title="风景">
   <script>
    let image = document.querySelector('img');
    //查看此元素有哪些属性
    console.dir(image);

    image.onclick = function(){
       console.log(image.src);
       console.log(image.title);
       image.src = "fei.jpg";
       image.title = "默读";
       console.log(image.src);
       console.log(image.title);
    }
   </script>

(3)获取/修改表单元素属性

表单元素(input,textarea,select......)有一些普通标签没有的特殊属性

如:value属性——获取到元素里用户填写的值

    <input type="text">
    <button>点我一下</button>
    <script>
        let input = document.querySelector('input');
        let botton = document.querySelector('button');
        //鼠标点击按钮,就会触发打印input输入框输入的具体内容
        botton.onclick = function(){
            //打印我们在input输入框里输入的具体内容
            console.log(input.value);
        }
    </script>

要用 input.value,不能使用 input.innerHTML,因为——

innerHTML:得到的是标签的内容,input标签是单标签,没有内容。

如:type属性

隐藏显示密码

    <input type="text">
    <button>隐藏密码</button>
    <script>
        let input = document.querySelector('input');
        let botton = document.querySelector('button');
        botton.onclick = function(){
          if(input.type == 'text'){
            input.type = 'password';
            botton.innerHTML = '显示密码';
          }else{
            input.type = 'text';
            botton.innerHTML = '隐藏密码';
          }
        }
    </script>

(4)获取/修改样式属性

修改内联样式(修改style属性的值)

例子:点击使字体变大

    <div style="font-size: 20px;">这是一个div,点击字体会变大</div>
    <script>
        let div = document.querySelector('div');
        div.onclick = function(){
            let fontsize = parseInt(div.style.fontSize);
            fontsize += 10;
            div.style.fontSize = fontsize + 'px';
        }
    </script>

修改元素应用的CSS类名

例子:切换夜间模式

    <div class="light" style="font-size: 20px; height: 500px;">这是一个div</div>
    <style>
        .light{
            /* 日间模式 */
            color: black;
            background-color: white;
        }
        .dack{
            /* 夜间模式 */
            color: white;
            background-color: black;
        }
    </style>
    
    <script>
        let div = document.querySelector('div');
        div.onclick = function(){
           if(div.className == "light"){
              div.className = "dack";
           }else{
              div.className = "light";
           } 
        }
    </script>

4、新增元素和删除元素

(1)新增元素

创建元素    document.createElement('元素');

把这个元素放到 dom 树中    尾插:appendChild(变量名);

   <div>这是一个div</div>
    <script>
        let i = document.createElement('input');
        i.value = 'hello';

        let div = document.querySelector('div');
        div.appendChild(i);
    </script>
    <ul>
        <li>11</li>
        <li>22</li>
    </ul>
    <script>
        let ul = document.querySelector('ul');
        for (let i = 3; i < 10; i++) {
            let li = document.createElement('li');
            li.innerHTML = i + '' + i;
            ul.appendChild(li);
        }
    </script>

(2)删除元素  removeChild(变量名);

    <ul>
        <li>11</li>
        <li>22</li>
    </ul>
    <script>
        let ul = document.querySelector('ul');
        for (let i = 3; i < 10; i++) {
            let li = document.createElement('li');
            li.innerHTML = i + '' + i;
            ul.appendChild(li);
        }
        //删除33这个元素
        //找到要删除的元素
        let toDelete = document.querySelectorAll('li')[2];
        console.log(toDelete);
        //删除
        ul.removeChild(toDelete);
    </script>

5、案例

(1)猜数字 

    <div>请输入一个数字:</div>
    <input type="text">
    <button>提交</button>
    <div class="one"></div>
    <script>
        //生成一个[1-100]的随机数
        let num = parseInt(Math.random()*100)+1;
        console.log(num);
        let input = document.querySelector('input');
        let button = document.querySelector('button');
        let result = document.querySelector('.one');
        button.onclick = function(){
            if(input.value == ''){
                return;
            }else if(parseInt(input.value) > num){
                result.innerHTML = '猜大了';

            }else if(parseInt(input.value) < num){
                result.innerHTML = '猜小了';
            }else{
                result.innerHTML = '猜对了';
            }
        }
    </script>

(2)表白墙(留言板)

<!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>表白墙</title>
    <style>
        *{
            /* 消除浏览器的默认样式 */
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        .box{
            width: 500px;
            margin: 0 auto;
        }
        h1{
            height: 100px;
            display: flex;  
            justify-content: center;
            align-items: center;
        }
        p{
            color: #666;
            height: 30px;
            text-align: center;
        }
        .row{
            display: flex;  
            justify-content: center;
            align-items: center;
            height: 40px;    
        }
        .row span{
           width: 110px;
        }
        .row input{
            width: 200px;
            height: 30px;
        }
        .row button{
            width: 310px;
            height: 30px;
            color: white;
            background-color: orange;
            border: none;
        }
        .row button:active{
            background-color: orangered;
        }
    </style>
</head>
<body>
    <div class="box">
        <h1>表白墙</h1>
        <p>输入后点击提交,会将信息显示在表格中</p> 
        <div class="row">
            <span>谁:</span>
            <input type="text">
        </div>
        <div class="row">
            <span>对谁:</span>
            <input type="text">
        </div>
        <div class="row">
            <span>说什么:</span>
            <input type="text">
        </div>
        
        <div class="row">
            <button id="one">提交</button>
        </div>
        <div class="row">
            <button id="two">撤销</button>
        </div>
        
   </div>

   <script>
    let box = document.querySelector('.box');
    let buttonOne = document.querySelector('#one');
    let inputs = document.querySelectorAll('input');
    let buttonTwo = document.querySelector('#two');
    buttonOne.onclick = function() {
        let from = inputs[0].value;
        let to = inputs[1].value;
        let msg = inputs[2].value;
        if(from =='' || to ==''|| msg ==''){
            return;
        }
        let resultDiv = document.createElement('div');
        resultDiv.className = 'row three';
        resultDiv.innerHTML = from+'对'+to+'说'+msg;  
        box.appendChild(resultDiv);
        for(let input of inputs){
            input.value = '';
        } 
    }
    buttonTwo.onclick = function(){
        let divs = document.querySelectorAll('.three');
        if(divs == null || divs.length == 0){
            return;
        }
        box.removeChild(divs[divs.length-1]);//删除元素
    }
   </script>
</body>
</html>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Mybatis1]介绍与快速入门

文章目录 Mybatis概述 持久层 框架 Mybatis与JDBC对比 JDBC代码的缺陷 Mybatis简化JDBC Mybatis快速入门案例 整体案例项目结构 1.创建user表&#xff0c;添加数据 2.创建Maven项目&#xff0c;导入坐标 3.编写Mybatis核心配置文件 4.编写数据库返回对象的实体类 5. 编写S…

QML Button详解

1.Button简介 Button表示用户可以按下或单击的按钮控件。按钮通常用于执行一个动作&#xff0c;或回答一个问题。典型的按钮有确定、应用、取消、关闭、是、否和帮助。 Button继承自AbstractButton&#xff0c;提供了以下几种信号。 void canceled() //当按…

Python笔记 -- 列表

文章目录1、列表简介2、修改、添加、删除元素2.1、添加2.2、删除3、排序、倒序4、遍历列表5、创建数值列表6、列表切片7、列表复制8、元组1、列表简介 在Python中用方括号[]表示列表&#xff0c;用逗号隔开表示其元素 通过索引访问列表 names [aa,bb,cc,dd]print(names[0]) …

游戏项目中的程序化生成(PCG):算法之外的问题与问题

本篇讨论的是什么 从概念上讲&#xff0c;PCG&#xff08;程序化生成&#xff09;的含义很广&#xff1a;任何通过规则计算得到的内容&#xff0c;都可算作是PCG。但在很多游戏项目的资料&#xff0c;包括本篇&#xff0c;讨论PCG时特指是&#xff1a;用一些算法/工具(特别是H…

C语言-基础了解-13-C enum枚举

C enum枚举 一、C枚举 枚举是 C 语言中的一种基本数据类型&#xff0c;用于定义一组具有离散值的常量。&#xff0c;它可以让数据更简洁&#xff0c;更易读。 枚举类型通常用于为程序中的一组相关的常量取名字&#xff0c;以便于程序的可读性和维护性。 定义一个枚举类型&a…

3.2 LED闪烁流水灯蜂鸣器

LED闪烁1.1 电路连接示意图LED采用低电平点亮的方式&#xff0c;利用ST-Link的3.3V进行供电。1.2程序设计1.21知识储备GPIO配置步骤步骤&#xff1a;1. 第⼀步&#xff0c;使⽤RCC开启GPIO的时钟2. 第⼆步&#xff0c;使⽤GPIO_Init()函数初始化GPIO3. 第三步&#xff0c;使⽤输…

JavaWeb--会话技术

会话技术1 会话跟踪技术的概述2 Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3 Session3.1 Session的基本使用3.2 Session的原理分析3.3 Session的使用细节3.3.1 Session钝化与活化3.3.2 Session销毁目标 理…

java坦克大战(1.0)

坦克大战 后面开始学习怎么使用java制造一个坦克大战游戏 但是不是直接开始做&#xff0c;而是随着这个游戏程序的制造&#xff0c;一边学习新知识融入到游戏中。包括多线程&#xff0c;反射&#xff0c;IO流… Java坐标体系 在几乎所有的坐标中都有一个x轴和y轴&#xff0c…

大数据项目实战之数据仓库:用户行为采集平台——第1章 数据仓库概念

第1章 数据仓库概念 数据仓库&#xff08;Data Warehouse&#xff09;&#xff0c;是为企业制定决策&#xff0c;提供数据支持的。可以帮助企业改进业务流程、提高产品质量等。 数据仓库的输入数据通常包括&#xff1a;业务数据、用户行为数据和爬虫数据等 业务数据&#xf…

Java - 对象的比较

一、问题提出 前面讲了优先级队列&#xff0c;优先级队列在插入元素时有个要求&#xff1a;插入的元素不能是null或者元素之间必须要能够进行比较&#xff0c;为了简单起见&#xff0c;我们只是插入了Integer类型&#xff0c; 那优先级队列中能否插入自定义类型对象呢&#xf…

深入理解JDK动态代理原理,使用javassist动手写一个动态代理框架

文章目录一、动手实现一个动态代理框架1、初识javassist2、使用javassist实现一个动态代理框架二、JDK动态代理1、编码实现2、基本原理&#xff08;1&#xff09;getProxyClass0方法&#xff08;2&#xff09;总结写在后面一、动手实现一个动态代理框架 1、初识javassist Jav…

Dijkstra算法的入门与应用

目录 一、前言 二、Dijkstra算法 1、Dijkstra 算法简介 2、算法思想&#xff1a;多米诺骨牌 3、算法实现 4、例子 三、例题 1、蓝桥王国&#xff08;lanqiaoOJ题号1122&#xff09; 一、前言 本文主要讲了Dijkstra算法的概念、实现与一道模板例题。 二、Dijkstra算法…

RSTP基础要点(上)

RSTP基础RSTP引入背景STP所存在的问题RSTP对于STP的改进端口角色重新划分端口状态重新划分快速收敛机制&#xff1a;PA机制端口快速切换边缘端口的引入RSTP引入背景 STP协议虽然能够解决环路问题&#xff0c;但是由于网络拓扑收敛较慢&#xff0c;影响了用户通信质量&#xff…

分布式对象存储

参考《分布式对象存储----原理、架构以及Go语言实现》&#xff08;作者&#xff1a;胡世杰&#xff09; 对象存储简介 数据的管理方式 以对象的方式管理数据&#xff0c;一个对象包括&#xff1a;对象的数据、对象的元数据、对象的全局唯一标识符 访问数据的方式 可扩展的分…

useCallback、useMemo、React.memo

1、React.memo React.memo 是 React 中用于函数组件优化的高阶组件&#xff0c;可以在一定程度上减少组件的重渲染&#xff0c;提升应用性能。React.memo 的实现原理是对比组件的前后两次渲染传入的 props 是否相等&#xff0c;如果相等则不会触发重新渲染&#xff0c;否则会触…

使用 Nacos 搭建一个简单的微服务项目

Nacos Nacos 是阿里巴巴推出来的一个新开源项目&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 准备Nacos 将 nacos 安装成功之后&#xff0c;进入nacos的bin 目录下&#xff0c;通过命令sh startup.sh -m standalone启动nacos&#xff0c;然后…

ChatGPT概述:从模型训练到基本应用的介绍

ChatGPT概述&#xff1a;从模型训练到基本应用的介绍 目录 本文是对ChatGPT的由来、训练过程以及实际落地场景的解释&#xff0c;主要内容包括如下三个方面&#xff1a; 1、ChatGPT是什么 2、ChatGPT的原理 3、ChatGPT的思考 4、ChatGPT的应用 ChatGPT是什么 ChatGPT可能是近…

代码随想录算法训练营第四天| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交 、142.环形链表II

24. 两两交换链表中的节点 24.两两交换链表中的节点介绍给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。思路上述是自己看到这道…

Zookeeper3.5.7版本——客户端命令行操作(命令行语法)

目录一、命令行语法二、help命令行语法示例一、命令行语法 命令行语法列表 命令基本语法功能描述help显示所有操作命令ls path使用 ls 命令来查看当前 znode 的子节点 [可监听]-w 监听子节点变化-s 附加次级信息create普通创建-s 含有序列-e 临时&#xff08;重启或者超时消失…

【3.5】单调栈、回文数、子序列、编辑距离问题,MySQL、Redis

文章目录单调栈总结子序列问题总结编辑距离问题总结回文串问题总结MySQL 执行流程是怎样的&#xff1f;第一步&#xff1a;连接器第二步&#xff1a;查询缓存第三步&#xff1a;解析器 解析SQL第四步&#xff1a;执行 SQL2.2 MySQL 一行记录是怎么存储的&#xff1f;MySQL 的数…