IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript的基本组成 -> 正文阅读

[JavaScript知识库]JavaScript的基本组成

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相关概念:

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

2.2 DOM常用操作

  • 元素的获取
  • 元素的动态创建
  • 元素属性的操作
  • 元素绑定的事件

3、DOM操作

3.1 元素的获取

  • 根据id获取元素
var div = document.getElementById('main');
  • 根据标签名获取元素
var divs = document.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {
  console.log(divs[i]);
} 
  • 根据name属性获取元素
var inputs = document.getElementsByName('hobby');
for (var i = 0; i < inputs.length; i++) {
  var input = inputs[i];
  console.log(input);
}
  • 根据类名获取元素
var mains = document.getElementsByClassName('main');
for (var i = 0; i < mains.length; i++) {
  var main = mains[i];
  console.log(main);
}
  • 根据选择器获取元素
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 点击事件
  • 事件处理程序:事件触发后要执行的代码(函数形式)
var box = document.getElementById('box');
box.onclick = function() {
  console.log('代码会在box被点击后执行');  
};

3.3 元素的属性操作

  • 操作表单元素属性
    如:value、type、disabled、selected、checked等
<!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等
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转义符

"		&quot;
'		&apos;
&		&amp;
<		&lt;   // less than  小于
>		&gt;   // greater than  大于
空格	   &nbsp;
?		&copy;
  • 操作自定义属性
    getAttribute() 获取标签行内属性
    setAttribute() 设置标签行内属性
    removeAttribute() 移除标签行内属性
<!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()

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

innerHTML

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

document.createElement()

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

性能问题

  • innerHTML方法会对字符串进行解析,需要避免在循环内多次使用。
  • 可以借助字符串或数组的方式进行替换,再设置给innerHTML
  • 优化后与document.createElement性能相近
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 08:59:40  更:2021-08-29 09:02:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:06:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码