【JavaEE】_JavaScript(Web API)

news2024/11/27 4:30:34

目录

1. DOM 

1.1 DOM基本概念

1.2 DOM树

2. 选中页面元素

2.1 querySelector

2.2 querySelectorAll

3. 事件

3.1 基本概念

3.2 事件的三要素

3.3 示例

4.操作元素

4.1 获取/修改元素内容

4.2 获取/修改元素属性

4.3 获取/修改表单元素属性

4.3.1 value:获取到元素里用户填写的值;

4.3.2 type:输入框的形态(文本框、密码框...)

4.4 获取/修改样式属性

4.4.1 修改内联样式:修改style属性的值

4.4.2 修改元素应用的CSS类名

5.操作结点

5.1 新增结点

5.2 删除结点


WebAPI都是浏览器给JS提供的功能,如果浏览器不同,API的行为也可能存在差异;

1. DOM 

1.1 DOM基本概念

DOM即Document Object Model 即文档(HTML)对象(JS对象)模型

含义为:把HTML中的每个标签都可以映射到JS中的一个对应对象。

故而:标签上显示的内容可以通过JS对象感知到,同时JS对象修改对应属性,能够影响到标签的显示;

1.2 DOM树

DOM树结构形如:

注:(1)文档:一个页面就是一个文档,即document;

(2)元素:页面中所有的标签都成为元素,即element;

(3)结点:网页中所有的内容都可以称为结点(标签结点,注释结点,文本节点,属性结点等),即note;

接下来将介绍常用的DOMAPI;

2. 选中页面元素

2.1 querySelector

在CSS中,使用选择器选中元素进行操作,在JS中,使用querySelector(CSS选择器)选中页面元素,返回被选中的具体对象;

    <div class="box">abc</div>
    <div id="id"> def</div>
    <h3>
        <span>
            <input type="text">
        </span>
    </h3>

    <script>
        let elem1=document.querySelector('.box');
        console.log(elem1);
        
        let elem2=document.querySelector('#id');
        console.log(elem2);

        let elem3=document.querySelector('h3>span>input');
        console.log(elem3);
    </script>

运行结果为:

注:(1)document是浏览器中的全局对象,任何一个页面都有一个document

(2)所有的DOM API都是通过document对象展开的;

(3)除console.log之外,还可以使用cconsoe.dir打印对象,以elem1为例:

展开后可以查看dir对象的所有属性;

(4)CSS所有的选择器都可以在querySelector处使用;

2.2 querySelectorAll

    <div class="box">abc</div>
    <div id="id"> def</div>
    <h3>
        <span>
            <input type="text">
        </span>
    </h3>
    <script>
        var arr=document.querySelectorAll('div');
        console.log(arr);
    </script>

运行结果为:

注:如果有多个类选择器重名,则querySelector默认选中第一个;

如果希望实现全部选中,则可使用querySelectorAll,二者使用方法完全相同,只是其返回的是一个数组;

3. 事件

3.1 基本概念

事件就是针对用户的操作进行的一些响应。

用户的行为会在浏览器中产生一些事件,要能够和用户交互,就需要代码针对事件做出反应;

3.2 事件的三要素

(1)事件源:哪个元素产生的事件;

(2)事件类型:是点击,选中还是修改等等;

(3)处理程序:事件发生后要执行哪个代码;

3.3 示例

<div class="box" onclick="alert('hello')">选择</div>

运行结果如下:

点击选择:

注:这是一个最简单的方式:直接在元素中使用onXXX方法来绑定一个事件处理程序;

但这种写法在实际开发中并不常用,更常用的方式如下:

    <div class="box" >选择</div>
    <div id="id">def</div>
    <script>
        let div = document.querySelector('.box');
        div.onclick = function(){
            alert('hello');
        }
    </script>

其中,事件源为名为.box的div,事件类型为点击事件,事件处理程序为function函数;

4.操作元素

4.1 获取/修改元素内容

先获取到该元素,使用innerHTML属性,就能拿到元素里的内容,修改该属性就会影响界面显示:

(一)使用innerHTML:

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

运行结果为:

 

点击abc四次后查看console标签页:

注:(1)输出“选择”文本前的数字是chrome控制台将相邻的相同的日志合并的结果,如果需要展开,可以在设置(Setting)中取消以下选项:

(二)修改innerHTML:

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

运行结果为:

点击四次abc后查看console标签页:

对应的,页面显示也发生改变:

4.2 获取/修改元素属性

HTML的标签属性也会映射到JS对象中;

代码示例:点击图片从1.jpg更换显示为2.jpg:

    <img src="1.jpg" width="200px" alt="">
    <script>
        let img = document.querySelector('img');
        img.onclick=function(){
            console.log(img.src);
            img.src='2.jpg';
        }
    </script>

运行页面如下:

点击图片后:

4.3 获取/修改表单元素属性

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

4.3.1 value:获取到元素里用户填写的值

代码示例1:打印在输入框中输入的内容

    <input type="text">
    <button>点击</button>
    <script>
        let input = document.querySelector('input');
        let button = document.querySelector('button');
        button.onclick = function(){
            console.log(input.value);
        }
    </script>

运行代码后,在网页页面输入框中输入hello world:

console标签页有:

注:不能将console.log(input.value)写为console.log(input.innerHTML),innerHTML获取到的是标签的内容,即双标签的开始和结束标签中编写的内容,input是单标签,没有内容;

代码示例2:点击按钮令输入框中的数字+1,并显示结果

    <script>
        let input = document.querySelector('input');
        let button = document.querySelector('button');
        button.onclick=function(){
            let value = parseInt(input.value);
            value+=1;
            input.value = value;
        }
    </script>

运行后输入4点击两次+1按钮:

注:(1)value属性是一个String类型,直接+1是在进行字符串拼接:

        button.onclick=function(){
            let value = input.value;
            value+=1;
            input.value = value;
        }

进行数值+1需要使用parseInt()函数将字符串类型转化为整数类型;

4.3.2 type:输入框的形态(文本框、密码框...)

代码示例:输入框文本与密码的更换

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

运行后,在输入框中输入123456:

点击隐藏密码后:

4.4 获取/修改样式属性

4.4.1 修改内联样式:修改style属性的值

代码示例1:实现div点击即可字体放大

    <div style="font-size: 20px;">Hello JavaScript</div>

    <script>
        let div = document.querySelector('div');
        div.onclick=function(){
            //先获取到当前字体的大小(转换为数值)
            let fontSize=parseInt(div.style.fontSize);
            fontSize +=10;
            // 设置字体大小时,切记px单位
            div.style.fontSize = fontSize+'px';  
        }
    </script>

运行后初始页面如下:

点击两次后:

注:(1)JS中所写的样式的属性名与CSS属性可能不同:

字体大小属性在CSS中写为font-size(脊柱命名法),在JS中写为fontSize(驼峰命名法),由于CSS中无需进行算术运算且CSS不区分大小写的,在JS等其他语言中,就需要进行转换;

属性名是相同的,只需将脊柱命名的属性名改为驼峰命名即可;

4.4.2 修改元素应用的CSS类名

代码示例1:切换夜间模式:

    <div id='one' class="light" style="font-size:20px; height:500px">切换</div>
    <style>
        .light{
            color: black;
            background-color: white;
        }
        .dark{
            color: white;
            background-color: black;
        }
    </style>
    <script>
        let div = document.querySelector("#one");
        div.onclick = function(){
            if(div.className == 'dark'){
                div.className='light';
            }else{
                div.className='dark';
            }
        }
    </script>

运行后网页初始页面为:

点击切换后,页面如下:

以上操作都是针对当前页面上已有元素进行展开的,

也可以通过JS实现对页面元素的创建与删除;

5.操作结点

5.1 新增结点

新增节点分为两个步骤:

(1)创建一个元素;

(2)将这个元素结点插入到DOM树中

代码示例1:实现在“请输入”文字后新增输入框,其默认值为hello:

    <div class="one">
        请输入:
    </div>
    <script>
        let input = document.createElement('input');
        input.value='hello';
        // 输入框中默认显示hello;
        let div = document.querySelector(".one");
        div.appendChild(input);
    </script>

运行后界面如下:

代码示例2:实现无序列表1 1 和2 2 后新增3 3至9 9:

    <ul>
        <li>1 1</li>
        <li>2 2</li>
    </ul>
    <script>
        let ul = document.querySelector('ul');
        for(let n=3;n<10;n++){
            let li = document.createElement('li');
            li.innerHTML = n+' '+n;
            ul.appendChild(li);
        }
    </script>

运行后页面如下:

注:(1)使用appendChild将新增结点插入到指定结点的最后一个孩子之后

(2)使用insertBefore将新增结点插入到指定结点之前

5.2 删除结点

代码示例1:基于前例无序列表1 1至9 9,实现删除3 3元素并通过console标签页打印3 3:

        let toDelete = document.querySelectorAll('li')[2];
        console.log(toDelete);
        ul.removeChild(toDelete);

运行后页面如下:

console标签页为:

注:使用parentElem.removeChild(childElem)删除指定元素的子元素

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

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

相关文章

nba2k24 灌篮高手樱木花道面补

nba2k24 灌篮高手樱木花道面补 nba2k23-nba2k24通用 灌篮高手樱木花道面补 下载地址&#xff1a; https://www.changyouzuhao.cn/9539.html

linux系统配置zabbix监控agent端

目录 客户端配置 启动服务 浏览器工具设置 创建主机群组 创建主机 创建监控项 ​编辑 ​编辑 创建触发器 查看监控 客户端配置 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm # yum clean allyum install -y zab…

【Python】Python代码的单元测试

Python代码的单元测试 单元测试的概念 定义&#xff1a;是指对软件中的最小可测试单元进行检查和验证。 作用&#xff1a;可以确保程序模块是否否和我们规范的输出&#xff0c;保证该模块经过修改后仍然是满足我们的需求。 单元测试的策略 如果要创建单元测试&#xff0c;…

2024最新APP下载单页源码 带管理后台 首发

2024最新APP下载单页源码 带管理后台 首发 新版带后台管理app应用下载页,自动识别安卓苹果下载页&#xff0c;带管理后台&#xff0c;内置带3套App下载模板带中文模板/英文模板随时切换。 下载地址2023最新APP下载单页源码 带管理后台 .zip官方版下载丨最新版下载丨绿色版下载…

重复导航到当前位置引起的。Vue Router 提供了一种机制,阻止重复导航到相同的路由路径。

代码&#xff1a; <!-- 侧边栏 --><el-col :span"12" :style"{ width: 200px }"><el-menu default-active"first" class"el-menu-vertical-demo" select"handleMenuSelect"><el-menu-item index"…

深度学习-吴恩达L1W2作业

作业1&#xff1a;吴恩达《深度学习》L1W2作业1 - Heywhale.com 作业2&#xff1a;吴恩达《深度学习》L1W2作业2 - Heywhale.com 作业1 你需要记住的内容&#xff1a; -np.exp&#xff08;x&#xff09;适用于任何np.array x并将指数函数应用于每个坐标 -sigmoid函数及其梯度…

【教学类-16-02】20240214《数字卡片1-9(正方形)华光彩云_CNKI》

背景需求&#xff1a; 前期坐过长方形A4纸的数字卡片 【教学类-16-01】20221121《数字卡片9*2》&#xff08;中班)_数字卡片pdf-CSDN博客文章浏览阅读897次。【教学类-16-01】20221121《数字卡片9*2》&#xff08;中班)_数字卡片pdfhttps://blog.csdn.net/reasonsummer/artic…

B端系统从0到1:有几步,其中需求分析要做啥?

一款B系统从无到有都经历了啥&#xff0c;而其中的需求分析又要做什么&#xff1f;贝格前端工场给老铁们做一下分析&#xff0c;文章写作不易&#xff0c;如果咱们有界面设计和前端开发需求&#xff0c;别忘了私信我呦&#xff0c;开始了。 一、B端系统从0到1都有哪些要走的步骤…

第13章 网络 Page729~733 链式任务反应

链式任务反应 当io_service对象身上没有任务的时候&#xff0c;当前正在运行的run()过程就结束了。这时再往它身上添加任务&#xff0c;程序收不到任务完成事件。 如果本次任务完成后&#xff0c;run()函数退出前再添加一项或更多任务&#xff0c;这就叫链式任务。 在asio的…

日志监控须知

在这个领域,最流行的应该是ELK. ELK可以让收集日志,检索日志更加的简单,让定位日志问题更加的高效,在也不需要挨个登录服务器,然后用一堆Linux命令去搜索日志了. ELK ( Elasticsearch Logstash Kibana ) ELK架构: 各个微服务,通过某种机制把自己的日志交给Logstash 这里的某…

455. Assign Cookies(分发饼干)

题目描述 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有一个…

代码随想录算法训练营Day25|回溯算法·组合总和III,电话号码的字母组合

组合总和III 题目&#xff1a;找出所有相加之和为n的k个数的组合。组合中只允许含有1-9的正整数&#xff0c;并且每种组合中不存在重复的数字。 组合变量个数为k个&#xff0c;和为n。简单思路是使用k重循环&#xff0c;一层层找出来&#xff0c;然后把每一层的数相加&#x…

数据库被人破解,删除数据,勒索

事情是这样的&#xff0c;我买了一台服务器自己部署项目玩儿玩儿&#xff0c;我的数据库运行在3306端口&#xff0c;密码没改&#xff0c;就是默认的123456&#xff0c;诡异的事情发生了&#xff0c;用了一段时间之后&#xff0c;数据库突然连接不上了&#xff0c;我一通操作猛…

【深度学习】“智能皮肤:深度学习驱动的‘智慧之眼‘应用如何革新皮肤病诊疗未来“

在一个不久的未来世界&#xff0c;医疗科技取得了惊人的突破。一款名为“智慧之眼”的神秘应用横空出世&#xff0c;它如同科幻小说中的神器&#xff0c;能够通过摄像头扫描皮肤病变&#xff0c;并借助深度学习技术迅速得出专业级别的诊断结果。这个革新性的故事始于一场科研马…

Sentinel 流控-链路模式

链路模式 A B C 三个服务 A 调用 C B 调用 C C 设置流控 ->链路模式 -> 入口资源是 A A、B 服务 package com.learning.springcloud.order.controller;import com.learning.springcloud.order.service.BaseService; import org.springframework.beans.factory.annotatio…

ClickHouse--05--MergeTree 表引擎

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 MergeTree 系列表引擎前言MergeTree 系列表引擎 --功能MergeTree 系列表引擎 --种类 1.MergeTree1.1MergeTree 建表语句&#xff1a;1.2 MergeTree 引擎表目录解析查…

【AI视野·今日Robot 机器人论文速览 第七十八期】Wed, 17 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Wed, 17 Jan 2024 Totally 49 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Safe Mission-Level Path Planning for Exploration of Lunar Shadowed Regions by a Solar-Powered Rover Authors Olivier L…

第13讲我创建的投票列表实现

新建我创建的投票页面 {"path": "pages/createVoteList/createVoteList","style": {"navigationBarTitleText": "我创建的投票"}}个人中心页面&#xff0c;加下 点击 “我创建的投票”跳转列表页面 goVoteList:function(){u…

ChatGPT高效提问—prompt实践(教师助手)

ChatGPT高效提问—prompt实践&#xff08;教师助手&#xff09; 下面来看看ChatGPT在教育领域有什么用途。 首先设定ChatGPT的角色为高中教师助手。 输入prompt: ChatGPT输出&#xff1a; ​ 教师助手的角色已经设置完成。下面通过几种不同的情景演示如何使用。 1.1.1 制定…

PhP+vue企业原材料采购系统_cxg0o

伴随着我国社会的发展&#xff0c;人民生活质量日益提高。互联网逐步进入千家万户&#xff0c;改变传统的管理方式&#xff0c;原材料采购系统以互联网为基础&#xff0c;利用php技术&#xff0c;结合vue框架和MySQL数据库开发设计一套原材料采购系统&#xff0c;提高工作效率的…