JavaScript的基本组成

ops/2025/3/13 1:28:45/

1、JavaScript的组成部分
   JavaScript可以分为三个部分:ECMAScript标准、DOM、BOM。

ECMAScript标准
  即JS的基本语法,JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标    准,定义了一种语言的标准与具体实现无关。
DOM
  即文档对象模型,Document Object Model,用于操作页面元素,DOM可以把HTML看做是文档    树,通过DOM提供的API可以对树上的节点进行操作。
-BOM
  即浏览器对象模型,Browser Object Model,用于操作浏览器,比如:弹出框、控制浏览器跳        转、获取分辨率等。
2、DOM介绍
        文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标记    语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API),它可以动态地访问程序和 脚本,更新其内容、结构和www文档的风格(目前,HTML和XML文档是通过说明部分定义的)。文 档可以进一步被处理,处理的结果可以加入到当前的页面。DOM是一种基于树的API文档,它要求在处理过程中整个文档都表示在存储器中。

2.1 DOM相关概念:
文档:一个网页可以称为文档
节点:网页中的所有内容都是节点(标签、属性、文本、注释等)
元素:网页中的标签

javascript">var divs = document.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {console.log(divs[i]);
} 


属性:标签的属性
2.2 DOM常用操作
元素的获取
元素的动态创建
元素属性的操作
元素绑定的事件
3、DOM操作
3.1 元素的获取

根据id获取元素

javascript">var div = document.getElementById('main');
  • 根据标签名获取元素
    javascript">var divs = document.getElementsByTagName('div');
    for (var i = 0; i < divs.length; i++) {console.log(divs[i]);
    } 
    

  • 根据类名获取元素
    javascript">var mains = document.getElementsByClassName('main');
    for (var i = 0; i < mains.length; i++) {var main = mains[i];console.log(main);
    }
    

  • 根据选择器获取元素
    javascript">var text = document.querySelector('#text');
    console.log(text);var boxes = document.querySelectorAll('.box');
    for (var i = 0; i < boxes.length; i++) {var box = boxes[i];console.log(box);
    }
    
    3.2 元素的事件

    事件三要素

  • 事件源:触发(被)事件的元素
  • 事件名称: click 点击事件
  • 事件处理程序:事件触发后要执行的代码(函数形式)
    javascript">var box = document.getElementById('box');
    box.onclick = function() {console.log('代码会在box被点击后执行');  
    };
    
    3.3 元素的属性操作
  • 操作表单元素属性
    如:value、type、disabled、selected、checked等
    javascript"><!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>checkbox和radio</title>
    </head>
    <body>
    <input id="btn" type="button" value="单选"/>
    <input type="radio" value="1" name="sex"/>男
    <input type="radio" value="2" name="sex" id="nv"/>女
    <input type="radio" value="3" name="sex"/>保密<br/>
    <input id="btn2" type="button" value="复选框"/>
    <input type="checkbox" value="1" name="hobby" class="hobby"/>看书
    <input type="checkbox" value="2" name="hobby" class="hobby"/>看电视
    <input type="checkbox" value="3" name="hobby" class="hobby"/>打篮球
    <input type="checkbox" value="4" name="hobby" class="hobby"/>吃饭
    <input type="checkbox" value="5" name="hobby" class="hobby"/>睡觉
    <input type="checkbox" value="6" name="hobby" class="hobby"/>打豆豆<br/>
    <input id="btn3" type="button" value="下拉框"/>
    <select><option value="-1">--请选择--</option><option value="1" id="sel">油闷大虾</option><option value="2">清蒸豆腐</option><option value="3">油炸土豆条</option><option value="4">烤羊腿</option><option value="5">酸菜鱼</option><option value="6">外婆菜</option>
    </select><script type="text/javascript">function my$(id) {return document.getElementById(id);}my$("btn").onclick = function () {my$("nv").checked = true;}my$("btn2").onclick = function () {var hobbyObjs = document.getElementsByClassName("hobby");for (var i = 0; i < hobbyObjs.length; i++) {if (i % 2 == 0) {hobbyObjs[i].checked = true;}}}my$("btn3").onclick = function (){my$("sel").selected = true;}</script>
    </body>
    </html>
    

  • 操作非表单元素属性
    如href、title、id、src、className等
    javascript">var link = document.getElementById('link');
    console.log(link.href);
    console.log(link.title);var pic = document.getElementById('pic');
    console.log(pic.src);
    var box = document.getElementById('box');
    box.innerHTML = '我是文本<p>我会生成为标签</p>';
    console.log(box.innerHTML);
    box.innerText = '我是文本<p>我不会生成为标签</p>';
    console.log(box.innerText);
    

    常用的HTML转义符

    javascript">"		&quot;
    '		&apos;
    &		&amp;
    <		&lt;   // less than  小于
    >		&gt;   // greater than  大于
    空格	   &nbsp;
    ©		&copy;
    

  • 操作自定义属性
    getAttribute() 获取标签行内属性
    setAttribute() 设置标签行内属性
    removeAttribute() 移除标签行内属性
    javascript"><!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>自定义属性</title>
    </head>
    <body>
    <ul id="score"><li>成绩A</li><li>成绩B</li><li>成绩C</li><li>成绩D</li><li>成绩E</li>
    </ul>
    <script type="text/javascript">var scoreList = my$("score").getElementsByTagName("li");for (var i=0; i<scoreList.length; i++){//  添加自定义属性scoreList[i].setAttribute("score", (i+1)*10);//  添加点击事件scoreList[i].onclick = function (){//  获取自定义属性   //  注意:不能通过DOM的方式直接获取标签的自定义属性,只能通过getAttribute方法获取alert(this.getAttribute("score"));}}function my$(id){return document.getElementById(id);}
    </script>
    </body>
    </html>
    3.4 元素的创建

    document.write()

    javascript">    document.write('新设置的内容<p>标签也可以生成</p>');
    

    innerHTML

    javascript">    var box = document.getElementById('box');box.innerHTML = '新内容<p>新标签</p>';
    

    document.createElement()

    javascript">    var div = document.createElement('div');document.body.appendChild(div);
    

    性能问题

  • innerHTML方法会对字符串进行解析,需要避免在循环内多次使用。
  • 可以借助字符串或数组的方式进行替换,再设置给innerHTML
  • 优化后与document.createElement性能相近
文章来源:https://blog.csdn.net/2402_84987408/article/details/145411950
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/ops/155209.html

相关文章

Nginx前端后端共用一个域名如何配置

在 Nginx 中配置前端和后端共用一个域名的情况&#xff0c;通常是通过路径或子路径将请求转发到不同的服务。以下是一个示例配置&#xff0c;假设&#xff1a; 前端静态文件在 /var/www/frontend/。 后端 API 服务运行在 http://127.0.0.1:5000。 域名是 example.com&#xff…

本地搭建deepseek-r1

一、下载ollama(官网下载比较慢&#xff0c;可以找个网盘资源下) 二、安装ollama 三、打开cmd&#xff0c;拉取模型deepseek-r1:14b(根据显存大小选择模型大小&#xff09; ollama pull deepseek-r1:14b 四、运行模型 ollama run deepseek-r1:14b 五、使用网页api访问&#x…

【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff01;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站点…

MapReduce,Yarn,Spark理解与执行流程

MapReduce的API理解 Mapper 如果是单词计数&#xff1a;hello&#xff1a;1&#xff0c; hello&#xff1a;1&#xff0c; world&#xff1a;1 public void map(Object key, // 首字符偏移量Text value, // 文件的一行内容Context context) // Mapper端的上下文&#xff0c;…

vscode+WSL2(ubuntu22.04)+pytorch+conda+cuda+cudnn安装系列

最近在家过年闲的没事&#xff0c;于是研究起深度学习开发工具链的配置和安装&#xff0c;之前欲与天公试比高&#xff0c;尝试在win上用vscodecuda11.6vs2019的cl编译器搭建cuda c编程环境&#xff0c;最后惨败&#xff0c;沦为笑柄&#xff0c;痛定思痛&#xff0c;这次直接和…

自适应细粒度通道注意力机制FCA详解及代码复现

机制定义 自适应细粒度通道注意(FCA)机制是一种创新的深度学习技术,旨在提高模型在图像处理任务中的性能。它通过 捕捉全局和局部信息之间的交互 ,优化特征权重分配,从而提升模型的表现。 FCA机制的核心在于其独特的设计原理: 利用相关矩阵捕捉信息 :FCA通过构建相关矩阵…

C++并发:设计无锁数据结构

只要摆脱锁&#xff0c;实现支持安全并发访问的数据结构&#xff0c;就有可能解决大粒度锁影响并发程度以及错误的加锁方式导致死锁的问题。这种数据结构称为无锁数据结构。 在了解本文时&#xff0c;务必读懂内存次序章节。 在设计无锁数据结构时&#xff0c;需要极为小心谨…

HBase基础shell命令

文章目录 前言一、基本命令1. 创建名称空间2. 删除名称空间3. 查询名称空间下的所有的表4. 列出所有表5. 查看表是否存在6. 查询表中的记录数7. 创建表8. 删除表&#xff08;先禁再删&#xff09;9. 新增/修改数据10. 查询一行数据11. 删除特定单元格12. 删除一整行数据 前言 …