认识JavaScript

news2024/11/25 10:50:31

在这里插入图片描述

大家好,今天我们来认识一下JavaScript相关内容

目录

  • 🐷1.JavaScript是什么
  • 🐷2.JavaScript发展史
  • 🐷3.JavaScript 和 HTML 和 CSS 之间的关系
  • 🐷4.JavaScript 运行过程
  • 🐷5.JavaScript 的组成
  • 🐷6.用JavaScript写第一个程序
  • 🐷7.JavaScript的书写形式
  • 🐷8.输入输出
  • 🐷9变量的使用
  • 🐷10动态类型
  • 🐷11.基本数据类型
    • 🌼1.number类数字类型
    • 🌼2.String字符串类型
      • 🍡1.基本规则
      • 🍡2.转义字符
      • 🍡3.求长度
      • 🍡4.字符串拼接
    • 🍡3.布尔类型
    • 🍡4.undefined未定义数据类型
    • 🍡5.null空值类型
  • 🐷12.运算符
    • 🍡1.算数运算符
    • 🍡2.赋值运算符
    • 🍡3.自增自减运算符
    • 🍡4.比较运算符
    • 🍡5.逻辑运算符
    • 🍡6.位运算
    • 🍡7.移位运算
  • 🐷13.条件语句
    • 🍡1.if语句
    • 🍡2.三元表达式
    • 🍡3.switch语句
  • 🐷14.循环语句
    • 🍐1.while循环
    • 🍐2.continue
    • 🍐3.break
    • 🍐4.for循环
  • 🐷15.数组
    • 👀1.创建数组
    • 👀2.获取数组元素
    • 👀3.新增数组元素
      • 💚1.通过修改length新增
      • 💚2.通过下标新增
      • 💚3.使用push进行追加元素
    • 💚4.删除数组中的元素
  • 🐷16.函数
    • 🥝1.语法格式
    • 🍸2.参数个数
    • 🍸3.函数表达式
    • 🍸4.作用域
  • 🐷17.对象
    • 🥝1.使用字面量创建对象
    • 🥝2.使用new Object创建对象
    • 🥝3.使用构造函数创建对象
  • 🐷18.JavaScript 的对象和 Java 的对象的区别
  • 🐷19.JavaScript(WebAPI)
    • 🍉1.什么是WebAPI
    • 🍉2.什么是API
    • 🍉3.API参考文档
  • 🐷20.DOM介绍
    • 🍉DOM树
  • 🐷21.获取元素
    • 🍉1.querySelector
    • 🍉2.querySelectorAll
  • 🐷22.事件
    • 🧊1.概念
    • 🧊2.事件三要素
    • 🧊3.简单示例
  • 🐷23.操作元素
    • 🧊获取/修改元素内容
      • 1.innerText
      • 2.innerHTML
  • 🐷24.操作节点
    • 🧊删除节点
  • 🐷25.代码举例-简单的表白墙页面

🐷1.JavaScript是什么

JavaScript简称JS,
是世界上最流行的编程语言之一
是一个脚本语言,通过解释器运行
主要在客户端(浏览器)上运行,现在也可以基于node.js在服务器上运行(了解即可)
可以用来网页开发,服务器开发,手机APP开发等
其实当初JavaScript就是用来完成表单验证(验证数据合法性),误打误撞,一炮而红

🐷2.JavaScript发展史

JavaScript之父布–兰登 艾奇 (Brendan Eich)
在这里插入图片描述
JavaScript十天就发明出来了,所以语法是混乱的

🐷3.JavaScript 和 HTML 和 CSS 之间的关系

如果把这三者理解为一个有层次的结构的话
在这里插入图片描述

html是网页的结构,CSS是网页的表现,JavaScript是网页的行为
这三句话比较抽象,把它想象成一个人的样子,HTML相当于一个人的骨头,CSS相当于人的皮,JavaScript相当于注入了灵魂,动起来了,css就是美化一个东西,JavaScript让这个东西具有生命力

🐷4.JavaScript 运行过程

代码编写好是保存在文件的,也就是存储在硬盘上
双击HTML文件,浏览器就会读取文件,让文件加载到内存中,也就是(数据存储:硬盘到内存)
浏览器会解析用户编写的的代码,把代码翻译成二进制,计算机可以识别的指令
二进制指令被CPU加载和执行(数据存储:内存到CPU)

在这里插入图片描述
从文件的加载到翻译到执行都是由浏览器执行的
浏览器分为渲染引擎和JS引擎
渲染引擎:解析HTML+CSS,叫做内核
JS引擎:JS解释器,最典型的就是Chrome中内置的V8
由JS引擎读取js代码内容解析成二进制指令

🐷5.JavaScript 的组成

ECMAScript(ES):JavaScript语法.是所有JS引擎都要遵守的标准
DOM:页面文档对象模型,对页面的元素进行操作
BOM:浏览器对象模型,对浏览器窗口进行操作

🐷6.用JavaScript写第一个程序

   <script>
        alert("hello")
    </script>

在这里插入图片描述
打开这个文件,就会出现这样的弹窗

🐷7.JavaScript的书写形式

1.行内式
直接嵌入到HTML元素内部
采用input标签

<!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>
   <input type="button" value="点我一下" onclick="alert('王一博永远不会塌!!!博门永存!!!')">
</body>
</html>

在这里插入图片描述
js一般采用单引号,HTML采用双引号
2.内嵌式
写到script标签里面

<script>
    alert("就保持无感,才会有幸福感");
   </script>

在这里插入图片描述

3.外部式
写到单独的.js文件中

<!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>
   <input type="button" value="点我一下" onclick="alert('王一博永远不会塌!!!博门永存!!!')">
   <!-- <script>
    alert("就保持无感,才会有幸福感");
   </script> -->
   <script src="index1.js"></script>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

注释的时候用ctrl+/注释

🐷8.输入输出

输入:prompt
弹出一个输入框

<script>
    prompt("请输入您的性别")
   </script>
   

在这里插入图片描述
输出:alert
弹出一个对话框,输出结果
在这里插入图片描述
在输入性别以后点击确定就会显示这个页面
在这里插入图片描述
输出: console.log
在控制台打印一个日志(供程序员看)

<script>
    // 向控制台输出日志
    console.log("这是一条日志");
   </script>
   

在这里插入图片描述
这个打开开发者工具才能看到,如上图所示
我们来说一说日志
日志是程序员调试程序的重要手段
console是js对象的某个属性或者方法
console.log就是使用控制台对象的log方法

🐷9变量的使用

基本用法
创建变量(变量定义和变量初始化)

<script>
    var name='王一博';
    var sage=25;
   </script>

js语法中所有的变量类型都可用var来描述

 <script>
    var name='王一博';
    var sage=25;
    console.log(sage);
 
   </script>

再来看一个代码案例

 <script>
    var name = prompt("请输入姓名:");
    var age = prompt("请输入年龄:");
    var score = prompt("请输入分数");
    alert("您的姓名是: " + name);
    alert("您的年龄是: " + age);
    alert("您的分数是: " + score);
   </script>

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们发现这样写好麻烦,我们采用拼接的方法来写

<script>
    var name = prompt("请输入姓名:");
    var age = prompt("请输入年龄:");
    var score = prompt("请输入分数");
    alert("您的姓名是: " + name + "\n" + "您的年龄是: " + age + "\n" + "您的分数是: " +
    score + "\n");
   </script>  

在这里插入图片描述
在这里我们说一下js的跳转方法
💖1.通过a标签

 <a href="http://www.baidu.com" target="_Self">百度</a>

在这里插入图片描述
在这里插入图片描述

2后端通过设置状态码302以及URL以及sendRedict来跳转,这个方法具体可以看模拟登录的页面已经实现过了,可以看那篇博客
链接: http://t.csdn.cn/CpPh5
http://t.csdn.cn/uFNBM
可以看看这两篇当中的实现
3.通过location.replace来跳转在这里插入图片描述

🐷10动态类型

JS 的变量类型是程序运行过程中才确定的(运行到 = 语句才会确定类型)
比如 var a=10;//数字
var b=“hhh”;//字符串
在运行带这里的语句时有可能变成
var a=10;
a=“hehehe”
这里不会报错,js语法就是又混乱又灵活,如果是Java一定会编译报错的

🐷11.基本数据类型

🌼1.number类数字类型

不区分整数和小数,统一使用数字类型表示
特殊的数字值
Infinity: 无穷大, 大于任何数字. 表示数字已经超过了 JS 能表示的范围.
-Infinity: 负无穷大, 小于任何数字. 表示数字已经超过了 JS 能表示的范围.
NaN: 表示当前的结果不是一个数字.

  <script>
    var max = Number.MAX_VALUE;
    // 得到 Infinity
    console.log(max * 2);
    // 得到 -Infinity
    console.log(-max * 2);
    // 得到 NaN
    console.log('hehe' - 10);
        console.log(isNaN(10)); // false
    console.log(isNaN('hehe' - 10)); // true
   </script>

在这里插入图片描述

‘hehe’ + 10 得到的不是 NaN, 而是 ‘hehe10’, 会把数字隐式转成字符串, 再进行字符串拼接.它从一个数字变成了字符串

🌼2.String字符串类型

🍡1.基本规则

字符串字面值需要使用引号引起来, 单引号双引号均可

如果字符串中本来已经包含引号
在这里插入图片描述
可以看到第一种写法错误
第二种采用转义字符来写的,用"表示在内部的引号
第三种和第四种本质没有区别,就是双引号和单引号要搭配用,比如最外面用的是双引号,里面就要用单引号

🍡2.转义字符

有些字符单独写无法识别,需要转义

\n 表示换行,相当于按一下回车
\ \ 用于表示一个反斜杠,防止他被解译成一个转义字符
\ ’ 用于表示字符常量‘
\ " 用于表示字符常量"
\t 表示空四个字符,也称缩进,相当于按一下Tab键

🍡3.求长度

求长度就是用String的求长度方法

<script>
        var a = 'hhhhh';
    console.log(a.length);
    var b = '哈哈';
    console.log(b.length);
    </script>

在这里插入图片描述

🍡4.字符串拼接

使用 + 进行拼接

 <script>
        var msg1="我喜欢";
        var msg2="王一博";
        console.log(msg1+msg2);
    </script>

在这里插入图片描述
数字和字符串也可以进行拼接

<script>
    var c = "你的年龄是 ";
    var d = 20;
    console.log(c + d);
</script>

在这里插入图片描述

<script>
    var c = "你的年龄是 ";
    var d = 20;
    console.log(c + d);
    console.log(100+100);
    console.log('1000'+12);
</script>

在这里插入图片描述
100+100当然等于200,但是字符串类型的1000+一个数字型的数字,我们看成是字符串的拼接

🍡3.布尔类型

Boolean 参与运算时当做 1 和 0 来看待.
在这里插入图片描述

在这里插入图片描述
但是这样的写法开发中是不被允许的

🍡4.undefined未定义数据类型

如果一个变量没有被初始化过, 结果就是 undefined, 是 undefined 类型

<script>
    var a;
   console.log(a)
</script>

在这里插入图片描述
此时对于a进行拼接

<script>
    var a;
   console.log(a);
   console.log(a+10);//NAN
   console.log(a+"12346")//undifined12346
</script>

在这里插入图片描述

🍡5.null空值类型

null表示变量是一个空值,啥都没有

<script>
    var b = null;
    console.log(b + 10); // 10
    console.log(b + "10"); // null10
</script>

在这里插入图片描述

🐷12.运算符

🍡1.算数运算符

/%

🍡2.赋值运算符

=
+=
-=
*=
/=
%=

🍡3.自增自减运算符

++:自增
–:自减

🍡4.比较运算符

<

<=

=
== 比较相等(会进行隐式类型转换)
!=
=== 比较相等(不会进行隐式类型转换)
!==

🍡5.逻辑运算符

&& 与: 一假则假
|| 或: 一真则真
! 非

🍡6.位运算

& 按位与
| 按位或
~ 按位取反
^ 按位异或

🍡7.移位运算

<< 左移
>>
有符号右移(算术右移)
>>> 无符号右移(逻辑右移)

🐷13.条件语句

🍡1.if语句

形式1
if (条件) {
语句
}
形式2
if (条件) {
语句1
} else {
语句2
}
形式3
if (条件1) {
语句1
} else if (条件2) {
语句2
} else if … {
语句…
} else {
语句…
}
来使用if语句写一个题
判定一个数字是奇数还是偶数

<script>
    var num = 10;
if (num % 2 == 0) {
console.log("num 是偶数");
} else {
console.log("num 是奇数");
}
</script>

在这里插入图片描述
判定条件不能写为num%2==1就是奇数,负的奇数%2结果可能是-1;
判定某一年份是否是闰年

<script>
    var year = 2000;
    if (year % 100 == 0) {
    // 判定世纪闰年
    if (year % 400 == 0) {
    console.log("是闰年");
    } else {
    console.log("不是闰年");
    }
    } else {
    // 普通闰年
    if (year % 4 == 0) {
    console.log("是闰年");
    } else {
    console.log("不是闰年");
    }
}
</script>

在这里插入图片描述

🍡2.三元表达式

是 if else 的简化写法
条件 ? 表达式1 : 表达式2
条件为真, 返回表达式1 的值. 条件为假, 返回表达式2 的值.

🍡3.switch语句

适合多分支的场景
很久没有遇到过Switch语句了
来复习一下它的结构

switch (表达式) {
case 值1:
语句1;
break;
case 值2:
语句2:
break;
default:
语句N;
}

在学习C语言的时候我们就接触过写一个判断今天是星期几的代码

<script>
    var day = prompt("请输入今天星期几: ");
    switch (parseInt(day)) {
    case 1:
    console.log("星期一");
    break;
    case 2:
    console.log("星期二");
    break;
    case 3:
    console.log("星期三");
    break;
    case 4:
    console.log("星期四");
    break;
    case 5:
    console.log("星期五");
    break;
    case 6:
    console.log("星期六");
    break;
    case 7:
    console.log("星期日");
    break;
    default:
    console.log("输入有误");
}
</script>

输入1,就得到这个结果

在这里插入图片描述

🐷14.循环语句

🍐1.while循环

while(条件){
循环体;
}
1.打印 1 - 10

<script>
        var number = 1;
    while (number <= 10) {
    console.log(number);
    number++;
}
</script>

在这里插入图片描述
2.计算 5 的阶乘

<script>
    var result = 1;
    var i = 1;
    while (i <= 5) {
    result *= i;
    i++;
    }
    console.log(result)
</script>

在这里插入图片描述

🍐2.continue

结束本次循环
1.吃10个李子, 发现第三个李子里有一只虫子, 于是扔掉这个, 继续吃下一个李子.

<script>
        var i = 1;
    while (i <= 10) {
    if (i == 3) {
    i++;
    continue;
    }
    console.log("我在吃第" + i + "个李子");
    i++;
    }
</script>

在这里插入图片描述
2.找到 100 - 200 中所有 5 的倍数
在这里插入图片描述

🍐3.break

结束整个循环
1.吃10个李子, 发现第三个李子里有半个虫子, 于是剩下的也不吃了.

<script>
    var i = 1;
    while (i <= 5) {
    if (i == 3) {
    break;
    }
    console.log("我在吃第" + i + "个李子");
    i++;
}
</script>

在这里插入图片描述
2.找到 100 - 200 中第一个 5 的倍数

<script>
    var num = 100;
    while (num <= 200) {
    if (num % 5 == 0) {
    console.log("找到了 5 的倍数, 为:" + num);
    break;
    }
    num++;
    }
</script>

在这里插入图片描述

🍐4.for循环

也是和C语言学的for循环结构是一样的
就不细说了,直接看代码案例
计算 5 的阶乘

<script>
    var result = 1;
for (var i = 1; i <= 5; i++) {
result *= i;
}
console.log("result = " + result);
</script>

在这里插入图片描述

🐷15.数组

👀1.创建数组

🌸1.使用 new 关键字创建

<script>
// Array 的 A 要大写
var arr = new Array();
</script>

🌸2.使用字面量方式创建 [常用]

<script>
var arr = [];
var arr2 = [1, 2, 'h', false];
 // 数组中保存的内容称为 "元素"
 </script>

js元素不要求元素必须是相同类型的

👀2.获取数组元素

使用下标的方式访问数组元素(从 0 开始)

<script>
    var arr = ['无名', '热烈', '长空之王'];
console.log(arr);
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
arr[2] = '人鱼';
console.log(arr);
</script>

在这里插入图片描述
如果下标超出范围读取元素, 则结果为 undefined

console.log(arr[3]); // undefined
console.log(arr[-1]); // undefined

在这里插入图片描述
不要给数组名直接赋值, 此时数组中的所有元素都没了
arr是一个数组,直接赋值变成字符串了
在这里插入图片描述

在这里插入图片描述

👀3.新增数组元素

💚1.通过修改length新增

1.相当于在末尾新增元素的时候默认值为undefined

<script>
    var arr = [1, 2, 3, 4];
    arr.length = 6;
    console.log(arr);
    console.log(arr[4], arr[5]);
</script>

在这里插入图片描述

💚2.通过下标新增

如果下标超过范围,会给指定位置插入元素

<script>
    var arr = [];
arr[5] = 10;
console.log(arr);
</script>

在这里插入图片描述

💚3.使用push进行追加元素

:给定一个数组, 把数组中的偶数放到一个 newArray 中.

<script>
    var arr = [9, 5, 2, 7, 3, 6, 8];
    var newArray = [];
    for (var i = 0; i < arr.length; i++) {
    if (arr[i] % 2 == 0) {
    newArray.push(arr[i]);
    }
    }
    console.log(newArray);
</script>

在这里插入图片描述

💚4.删除数组中的元素

使用 splice 方法删除元素

<script>
    var arr = [95, 56, 28, 79];
// 第一个参数表示从下表为 1 的位置开始删除. 第二个参数表示要删除的元素个数是 2 个
    arr.splice(1, 2);
    console.log(arr);

</script>

在这里插入图片描述

🐷16.函数

🥝1.语法格式

</script>
<script>
    // 创建函数
    function 函数名(形参列表) {
    函数体
    return 返回值;
    }
    // 函数调用
    函数名(实参列表) // 不考虑返回值
    返回值 = 函数名(实参列表) // 考虑返回值
</script>

函数定义并不会执行函数体内容, 必须要调用才会执行. 调用几次就会执行几次.

<script>
    function hello() {
console.log("hello");
}
// 如果不调用函数, 则没有执行打印语句
hello();
</script>

在这里插入图片描述

调用函数的时候进入函数内部执行, 函数结束时回到调用位置继续执行. 可以借助调试器来观察.(也就是回调函数,在讲解构造http请求的时候已经说过了)
可以看这篇博客
http://t.csdn.cn/L69MS

数的定义和调用的先后顺序没有要求. (这一点和变量不同, 变量必须先定义再使用)

🍸2.参数个数

实参和形参之间的个数可以不匹配. 但是实际开发一般要求形参和实参个数要匹配

  1. 如果实参个数比形参个数多, 则多出的参数不参与函数运算
  2. 如果实参个数比形参个数少, 则此时多出来的形参值为 undefined

🍸3.函数表达式

<script>
var fun = function(arg0, arg1, arg2){
//函数体
};
console.log(fun(1,2,3))
</script>

这是一个匿名的函数表达式,可以对匿名函数用一个变量来表示.
后面就可以通过这个变量fun来调用函数

🍸4.作用域

ES6标准之前.作用域主要分两个
1.全局作用域:在整个script标签或者单独的js文件有效
2.局部作用域:只在函数内部有效

<script>
// 全局变量
var num = 10;
console.log(num);
function test() {
// 局部变量

var num = 20;
console.log(num);
}
</script>

🐷17.对象

🥝1.使用字面量创建对象

使用 { } 创建对象

<script>
    var a = {}; // 创建了一个空的对象
var student = {
name: '王一博',
height: 183,
weight:130 

};
</script>

属性和方法使用键值对的形式来组织.
键值对之间使用 , 分割. 最后一个属性后面的 , 有没有都行
键和值之间使用 : 分割

// 1. 使用 . 成员访问运算符来访问属性 . 可以理解成 “的”
console.log(student.name);
// 2. 使用 [ ] 访问属性, 此时属性需要加上引号
console.log(student[‘height’]);

🥝2.使用new Object创建对象

<script>
 var student = new Object(); // 和创建数组类似
student.name = "王一博";
student.height = 183;
student['weight'] = 130;
student.sayHello = function () {
console.log("hello");
}
console.log(student.name);
console.log(student['weight']);
//不能忘记调用方法
student.sayHello();
</script>

在这里插入图片描述

🥝3.使用构造函数创建对象

创建几个狗对象

<script>
var doudou = {
name: "豆豆",
type: "金毛",
miao: function () {
console.log("汪汪汪");
}
};
var xiaohei = {
name: "小黑",
type: "柴犬",
miao: function () {
console.log("汪");
}
}
var ciqiu = {
name: "刺球",
type: "阿拉斯加",
miao: function () {
console.log("咕噜噜");
}
}
</script>

🐷18.JavaScript 的对象和 Java 的对象的区别

1.JavaScript没有类的概念
2.JavaScript不区分属性和方法
3.JavaScript没有访问权限
4.JavaScript没有继承
5.JavaScript没有多态

🐷19.JavaScript(WebAPI)

🍉1.什么是WebAPI

JS 分成三个大的部分
ECMAScript: 基础语法部分
DOM API: 操作页面结构
BOM API: 操作浏览器
WebAPI 就包含了 DOM + BOM.
WebAPI , 特指 DOM+BOM

🍉2.什么是API

应用程序接口(API,Application Programming Interface)是基于编程语言构建的结构,使开发人员更容易地创建复杂的功能。它们抽象了复杂的代码,并提供一些简单的接口规则直接使用。
比如要插电,吃插在插座,而不是连电线,这个步骤已经在插座里面封装好了

🍉3.API参考文档

https://developer.mozilla.org/zh-CN/docs/Web/API

🐷20.DOM介绍

🍉DOM树

在这里插入图片描述
文档: 一个页面就是一个 文档, 使用 document 表示.
元素: 页面中所有的标签都称为 元素. 使用 element 表示.
节点: 网页中所有的内容都可以称为 节点(标签节点, 注释节点, 文本节点, 属性节点等). 使用 node
表示.

🐷21.获取元素

有点像CSS选择器的功能

🍉1.querySelector

<div class="cat">abc</div>
<div id="id">def</div>
<h3><span><input type="text"></span></h3>
<script>
var elem1 = document.querySelector('.cat');
console.log(elem1);
var elem2 = document.querySelector('#id');
console.log(elem2);
var elem3 = document.querySelector('h3 span input');
console.log(elem3);
</script>

在这里插入图片描述

🍉2.querySelectorAll

使用 querySelectorAll 用法和上面类似

<div class="cat">abc</div>
<div id="id">def</div>
<script>
var elems = document.querySelectorAll('div');
console.log(elems);
</script>

在这里插入图片描述

🐷22.事件

🧊1.概念

JS 要构建动态页面, 就需要感知到用户的行为.
用户对于页面的一些操作(点击, 选择, 修改等) 操作都会在浏览器中产生一个个事件, 被 JS 获取到, 从而进行更复杂的交互操作.

🧊2.事件三要素

  1. 事件源: 哪个元素触发的
  2. 事件类型: 是点击, 选中, 还是修改
  3. 事件处理程序: 进一步如何处理. 往往是一个回调函数=

🧊3.简单示例

<button id="button">点我一下</button>
<script>
var button = document.getElementById('button');
button.onclick = function () {
alert("hello why");
}
</script>

在这里插入图片描述

在这里插入图片描述

button 按钮就是事件源.
点击就是事件类型
function 这个匿名函数就是事件处理程序
其中 button.onclick = function() 这个操作称为 注册事件/绑定事件
这个匿名函数相当于一个回调函数, 这个函数不需要程序猿主动来调用, 而是交给浏览器, 由浏览器自动在合适的时机(触发点击操作时) 进行调用.

🐷23.操作元素

🧊获取/修改元素内容

1.innerText

<div>
    <span>hello world</span>
    <span>hello world</span>
    </div>
    <script>
    var div = document.querySelector('div');
    // 读取 div 内部内容
    console.log(div.innerText);
    // 修改 div 内部内容, 界面上就会同步修改
    div.innerText = 'hello js <span>hello js</span>';
    </script>
</body>

在这里插入图片描述
innerText 无法获取到 div 内部的 html 结构, 只能得到文本内容.
修改页面的时候也会把 span 标签当成文本进行设置.

2.innerHTML

<div>
    <span>hello world</span>
    <span>hello world</span>
    </div>
    <script>
    var div = document.querySelector('div');
    // 读取页面内容
    console.log(div.innerHTML);
    // 修改页面内容
    div.innerHTML = '<span>hello js</span>'
    </script>

在这里插入图片描述
innerHTML 不光能获取到页面的 html 结构, 同时也能修改结构. 并且获取到的内容保留的空格和换行

🐷24.操作节点

使用 createElement 方法来创建一个元素
使用 appendChild 将节点插入到指定节点的最后一个孩子之后

<div class="container">
    </div>
    <script>
    var div = document.createElement('div');
    div.id = 'mydiv';
    div.className = 'box';
    div.innerHTML = '哇啊';
    var container = document.querySelector('.container');
    container.appendChild(div);
    console.log(div);
    </script>

在这里插入图片描述

🧊删除节点

使用 removeChild 删除子节点

🐷25.代码举例-简单的表白墙页面

<!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>
   <!-- 引入jquery -->
   <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
   <style>
       /* * 通配符选择器, 是选中页面所有元素 */
       * {
           /* 消除浏览器的默认样式. */
           margin: 0;
           padding: 0;
           box-sizing: border-box;
       }

       .container {
           width: 600px;
           margin: 20px auto;
       }

       h1 {
           text-align: center;
       }

       p {
           text-align: center;
           color: #666;
           margin: 20px 0;
       }

       .row {
           /* 开启弹性布局 */
           display: flex;
           height: 40px;
           /* 水平方向居中 */
           justify-content: center;
           /* 垂直方向居中 */
           align-items: center;
       }

       .row span {
           width: 80px;
       }

       .row input {
           width: 200px;
           height: 30px;
       }

       .row button {
           width: 280px;
           height: 30px;
           color: white;
           background-color: orange;
           /* 去掉边框 */
           border: none;
           border-radius: 5px;
       }

       /* 点击的时候有个反馈 */
       .row button:active {
           background-color: grey;
       }
   </style>
</head>
<body>
   <div class="container">
       <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="submit">提交</button>
       </div>
       <div class="row">
           <button id="revert">撤销</button>
       </div>
       <!-- <div class="row">
           xxx 对 xx 说 xxxx
       </div> -->
   </div>

   <script>
       // 实现提交操作. 点击提交按钮, 就能够把用户输入的内容提交到页面上显示. 
       // 点击的时候, 获取到三个输入框中的文本内容
       // 创建一个新的 div.row 把内容构造到这个 div 中即可. 
       let containerDiv = document.querySelector('.container');
       let inputs = document.querySelectorAll('input');
       let button = document.querySelector('#submit');
       button.onclick = function() {
           // 1. 获取到三个输入框的内容
           let from = inputs[0].value;
           let to = inputs[1].value;
           let msg = inputs[2].value;
           if (from == '' || to == '' || msg == '') {
               return;
           }
           // 2. 构造新 div
           let rowDiv = document.createElement('div');
           rowDiv.className = 'row message';
           rowDiv.innerHTML = from + ' 对 ' + to + ' 说: ' + msg;
           containerDiv.appendChild(rowDiv);
           // 3. 清空之前的输入框内容
           for (let input of inputs) {
               input.value = '';
           }
           //4.通过ajax构造post请求,把新的消息提交给服务器
           let body={
            from: from,
            to:to,
            message: msg
           };//这是一个js对象
           $.ajax({
                type:'post',
                url: 'message',
                contentType:"application/json; charset=utf8",
                data:JSON.stringify(body),//js对象转成一个json格式字符串
                success: function(body){
                    //响应成功返回之后,调用到回调
                    console.log("消息发送给服务器成功");
                }
           });

       }
       let revertButton = document.querySelector('#revert');
       revertButton.onclick = function() {
           // 删除最后一条消息. 
           // 选中所有的 row, 找出最后一个 row, 然后进行删除
           let rows = document.querySelectorAll('.message');
           if (rows == null || rows.length == 0) {
               return;
           }
           containerDiv.removeChild(rows[rows.length - 1]);
       }
       //在页面加载的时候,希望能从服务器获取到所有的消息,并显示在网页中
       $.ajax({
        type:'get',
        url:'message',//URL都是是使用相对路径的写法,相对路径意味着工作路径就是当前文件所在的路径
                //当前文件路径是/message_wall/,所以此时请求就是/message_wall/message
        success: function(body){
                //body是收到的响应的正文部分,我们之前已经约定是json格式
                //后端代码的响应中Content-type是application/json,此时的jQuery会把body的json格式自动转化为js对象
                //就不用jQuery.parse了
                //现在的body已经是js对象数组了
                //闲杂就需要遍历这个数组,取出每个元素,构造HTML标签,添加到html页面上
                    let container=document.querySelector('.container');
                for(let message of body){
                    let rowDiv=document.createElement('div');
                    rowDiv.className="row";
                    rowDiv.innerHTML=message.from+"对"+message.to+"说"+message.message;
                    container.appendChild(rowDiv);

                }

        }
       });
   </script>
</body>
</html>


今天的讲解就到这里,我们下期再见,886~~~
在这里插入图片描述

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

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

相关文章

JavaScript 实现一键复制(id,账号)

文章目录 HTML准备JavaScript 逻辑css 在前端有很多的时候需要一键复制账号&#xff0c;密码等&#xff0c;比如QQ的复制QQ账号&#xff0c;一些程序应用的个人信息页&#xff0c;都会有一键复制这个功能&#xff0c;下面给大家分享一下一键复制的实现方法 HTML准备 先提前准备…

【Linux修炼】开发工具使用

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

计算机丢失msvcr110.dll是什么意思?那个修复方法更简单

Windows系统的电脑运行一段时间&#xff0c;总是不可避免出现一些系统报错&#xff0c;比如在运行游戏或游戏的时候&#xff0c;报错提示“计算机丢失msvcr110.dll”&#xff0c;“找不到msvcr110.dll”是什么意思呢&#xff1f;我是运行photoshop的时候报错的&#xff0c;场景…

Paddle:SSLD 知识蒸馏实战

SSLD 知识蒸馏实战 论文&#xff1a;https://arxiv.org/abs/2103.05959 1. 算法介绍 1.1 简介 PaddleClas 融合已有的知识蒸馏方法 [2,3]&#xff0c;提供了一种简单的半监督标签知识蒸馏方案(SSLD&#xff0c;Simple Semi-supervised Label Distillation)&#xff0c;基于 I…

如何解释商业智能BI?商业智能BI未来的发展趋势?

商业智能BI能够成为当前商业世界中备受企业欢迎的数据类技术解决方案其实是有原因的&#xff0c;早在1958年&#xff0c;IBM研究员就将商业智能BI的早期形态定义为&#xff1a;“对事物相互关系的一种理解能力&#xff0c;并依靠这种能力去指导决策&#xff0c;以达到预期的目标…

【Python】正则表达式匹配大部分Url

正则表达式&#xff1a; r’(\w://)?(\w)(.\w).(\w)(/\w)(.\w)?(?(\w\w)(&\w\w))?’ 解释&#xff1a;

World macheine和Houdini这两个软件在游戏地形制作中如何选择?

本文仅针对“World macheine和Houdini这两个软件在游戏地形制作中如何选择&#xff1f;”做出回答。 简单介绍 World Machine&#xff1a; World Machine是一款专业的地形生成软件。它提供了一套强大的工具和节点系统&#xff0c;用于创建高度图和地形。World Machine可以帮助…

opencv使用applyColorMap()函数,可以将灰度图或彩色图转换成自定义的彩色图,或opencv提供的20多种色彩值

文章目录 1、applyColorMap()函数的使用&#xff1a;&#xff08;1&#xff09;函数原型&#xff1a;void applyColorMap(InputArray src, OutputArray dst, int colormap)void applyColorMap(InputArray src, OutputArray dst, InputArray userColor) &#xff08;2&#xff0…

PMP证书为什么可以不用考试就可以获得CSPM二级证书?

一、PMP证书介绍 PMP是指项目管理专业人士&#xff08;Project Management Professional&#xff09;&#xff0c;是国际上公认的项目管理领域的权威认证。PMP认证由美国项目管理协会&#xff08;PMI&#xff09;颁发&#xff0c;是全球范围内最具权威性、最受认可的项目管理专…

Jmeter使用之:怎么编写扩展函数(一)

目录 前言&#xff1a; 1、首先编写我们的java类&#xff0c;如具体代码如下&#xff1a; 2、使用eclipse把java导出成jar包&#xff0c;如timetool.jar。 3、Jmeter 测试计划底部的library找到timetool.jar&#xff0c;导入进去。 4、在Jmeter测试计划下新建线程组&#…

咨询第三方软件测试机构报价时,软件企业应该准备什么?

随着软件行业的快速发展&#xff0c;软件企业也面临着越来越大的市场竞争压力。为了确保软件产品的质量和稳定性&#xff0c;许多企业开始选择外包软件测试服务。然而&#xff0c;在咨询第三方软件测试机构报价之前&#xff0c;软件企业需要做好一些准备工作&#xff0c;以获得…

AI很渴:chatGPT交流一次=喝掉一瓶水,GPT3训练=填满核反应堆

流行的大型语言模型&#xff08;LLM&#xff09;&#xff0c;如OpenAI的ChatGPT和Google的Bard&#xff0c;耗能巨大&#xff0c;需要庞大的服务器农场提供足够的数据来训练这些强大的程序。对这些数据中心进行冷却也使得AI聊天机器人对水的需求量极大。新的研究表明&#xff0…

小白到运维工程师自学之路 第四十五集 (生产级Redis Cluster部署)

一、概述 Redis Cluster是Redis数据库的一种分布式解决方案&#xff0c;用于在多个节点上分布和 管理数据。它通过将数据分片存储在不同的节点上&#xff0c;实现数据的分布式存储和处理。 Redis Cluster采用主从复制的方式来保证数据的高可用性和容错性&#xff0c;每个主节…

ai绘画二次元软件免费的哪个好?这些二次元ai绘画软件比较好

小伙伴好呀&#xff0c;今天我要和你们分享一个超酷的话题——ai绘画二次元作品&#xff01;是不是感觉很时髦&#xff1f;没错&#xff0c;现在我们不再局限于传统的绘画方式&#xff0c;而是可以通过ai技术来创造出令人赞叹的二次元世界。你不需要成为一名艺术大师&#xff0…

从文档智能开始洞察一切

文档智能 Document Intelligence 即使在当今数字至上的时代&#xff0c;许多交易仍依赖于发票、合同、法律文件、员工记录、财务报表等纸质文件。当企业希望对纸质记录进行数字化处理&#xff0c;以便搜索、保存和提取有价值的数据以用于决策和市场开拓&#xff0c;AI支持的文…

【教学类-36-05】动物头饰制作2.0(midjounery动物简笔画四图)一页两种动物

作品展示 背景需求&#xff1a; 头饰1.0的教学实践发现&#xff0c;完全可以利用裁剪的边缘纸条作为头饰的套环。因此重新设计word模板&#xff0c;合理布局图案位置&#xff0c;设计了一页2份的头饰。 原来样式&#xff1a;一页一份动物&#xff08;4个&#xff09; 现在样式…

16-Linux背景知识

目录 1.Linux是什么? 2.Unix & Linux 发展历程图 3.Linux 发行版 PS&#xff1a;CentOS 和 RedHat 的关系 4.关于 Linux 学习什么&#xff1f; 4.1.基础命令&#xff08;重点&#xff09; PS&#xff1a;使用命令相比于使用图形界面的主要好处 4.2.系统编程 &…

IP地址定位在电商行业中的应用

最新数据显示&#xff0c;随着电商行业的快速发展越来越多的企业开始将IP地址定位技术应用于其业务中。IP地址定位是一种利用互联网上的IP地址来确定用户地理位置的技术它通过识别用户的IP地址&#xff0c;从而可以实时追踪和定位他们的位置。 在电商行业中&#xff0c;IP地址定…

Docker 搭建sonarqube,并集成阿里P3C规则

简介 本文安装的sonarqube是7.6-community版本&#xff0c;未安装最新版是因为7.9之后不再支持mysql。如果你安装的是其他版本的sonarqube&#xff0c;那么不要使用插件包中的插件&#xff0c;会有版本兼容性问题。 插件 插件包 插件包中包含java语音插件&#xff0c;汉化插…

linux下postgresql的安装和部署

1.官网下载安装包 PostgreSQL: File Browser 2. 下载成功后上传到Linux服务器 3.解压文件 tar -zxvf postgresql-14.5.tar.gz 4.编译(后边的地址指定的就是安装数据库目录) ./configure --prefix/usr/local/postgresql 出现异常&#xff1a;configure: error: readline lib…