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学习笔记 js基础及案例 -> 正文阅读

[JavaScript知识库]javaScript学习笔记 js基础及案例


一、简介

1、概述

JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。
js组成部分

部分组成作用
ECMA Script构成了js核心的语法基础
BOMBrowser Object Model 浏览器对象模型,用来操作浏览器上的对象
DOMDocument Object Model 文档对象模型,用来操作网页中的元素
  • 核心(Script):这一部分主要是js基本语法
  • BOM:(浏览器对象模型),主要是获取浏览器信息或操作浏览器的,例如:浏览器的前进与后退、浏览器弹出提示框、浏览器地址栏输入网址跳转等操作等。
  • DOM:(文档对象模型),此处的文档暂且理解为html,html加载到浏览器的内存中,可以使用js的DOM技术对内存中的html节点进行修改,用户从浏览器看到的是js动态修改后的页面。(增删改查)

2、特点

1.交互性(它可以做的就是信息的动态交互)
2.安全性(不允许直接访问本地硬盘)
3.跨平台性(只要是可以解析js的浏览器都可以执行,和平台无关)

3、书写的位置

3.1、内嵌式:

理论上js可以书写在页面的任意位置。

3.2、外链式:

首先新建一个文件类型为.js的文件,然后在该文件中写js语句,通过script标签对引入到html页面中。

<script src="js文件路径地址">这里不能写js语句</script>

3.3、行内式:

直接书写在标签身上,是一个简写的事件,所以又称之为事件属性。 onclick单击事件

<input type="button" value="点我呀!" onclick="alert('点我干啥!^6^');">
<button onclick="alert('恭喜你,中 500 万.');">点我呀!</button>

4、注释

  • 单行注释: // 注释语句 快捷键ctrl+/
  • 多行注释: /* 注释语句 */ 快捷键ctrl+shift+/
    注意:多行注释相互不能嵌套使用,只能在多行注释里面使用单行注释!

5、数据类型

  • 数值型:number(凡是数字都是数值型,不区分整数和小数)
  • 字符串:string(凡是引号包裹起来的内容全部都是字符串)
  • 布尔:booleantrue、false
  • 对象类型:object(特殊取值null)
  • 未定义型:undefined

6、变量

6.1、定义:变量是用于存放数据的容器,我们通过变量名获取数据,甚至可以使用修改数据。
6.2、声明变量:

var 变量名称 = 存储的数据;   	(variable 变量)

6.3、变量命名规范:

1.	只能由字母、数字、_(下划线)、$(美元符号)组成。如:usrAge , num01 , _name
2.	不能以数字开头。,如:18age、1 都是错的
3.	变量不能是关键字(有特殊意义)、保留字,如:var 、for 、while、if、find
4.	变量名必须有意义,如:a、b、c=>name、age之类的变量名
5.	遵守驼峰命名法,首字母小写,后面单词的首字母需要大写,如: myFirstName
6.	命名中不能出现-(js会理解成减号进行减法的操作),不能和关键字冲突。

练习:交换两个变量的值(已完成)
在这里插入图片描述
交换变量时:需要创建第三个变量空盒子,来进行中间转换。 例如:num1和num2是两个需要交换的值,num3是创建的空盒子 先将num1的值赋予(挪到)num3中,此时num1空着,再将num2 的值赋予(挪 到)num1中,最后将num3里装的值赋予(挪到)num2中,完成交换。

7、检测数据类型

typeof(value); 或者typeof value;     返回这个变量的类型. 
说明 : 同一个变量, 可以进行不同类型的数据赋值.

举例:

<script type="text/javascript">
    
    var a;
    alert(typeof a);  // undefined
 
    a = 100;
    alert(typeof a); // number
 
    a = "好好学习";
    alert(typeof a); // string
 
    a = true;
    alert(typeof a); // boolean
    
</script>

8、算数运算符

概述:运算符也被称为操作符,是用于实现赋值、比较和执行算数运算符等功能的符号。

  • JavaScript中常用的运算符有:
  • 算数运算符
  • 递增和递减运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符

注意:

1.	由于js中的小数和整数都是number类型,不存在类似整数除以整数还是整数的结论。
2.	字符串和其他的数据使用+号运算,会连接成一个新的字符串。
3.	字符串使用除了+以外的运算符:如果字符串本身是一个数字,那么会自动转成number进行运算
,否则就会返回一个NaN的结果,表示这不是一个数字。NaN:not a number

举例:

<script>
 
    alert(1234 / 1000 * 1000); // 1234
  
    var s = "12";
     s -= 10;
    alert(s);  // 2
 
    var s = "aa";
    s -= 10;
    alert(s);  // NaN       Not a Number 不是一个数字
 
    var s = "12";
    s += 10;
    alert(s);       // 1210 
 
</script>

8.1、算数运算符:
用于执行两个变量或值的算术运算

运算符描述实例
+10+10=20
-20-10=10
*10*20=200
/10/20=0.5
%取余返回除法的余数9%2=1

尽量避免用浮点数直接进行运算,会有误差。

1 比如:
2 var num=0.1+0.2;
3 console.log(num==0.3); //得出结果是false,不相等

表达式和返回值:

 1 console.log(1 + 1); //1 + 1 是表达式 ,2 是返回值

8.2、递增和递减运算符:

  • 递增运算符
    ++num 类似于num=num+1
    口诀:先自加,后返回值
var  num = 10;
console.log(++num + 10);//21
  • 递增运算符
    num++后置递增,类似于num = num + 1
    口诀:先返回原值,后自加
var  num = 10;
console.log(10 + num++);//20

8.3、 比较运算符:

>		>=		<		<=  	!=		
==	等于(只比较内容)	===	恒等于(比较内容的同时还要比较数据类型)
注意:关系运算符返回的结果只有两个:true / false

举例:

<script>
 
    // 请问: 3 > 5, 结果为 ?
    alert(3 > 5);   // false
 
    // 请问: “22” == 22  结果为 ?
    alert("22" == 22); // true  (仅仅判断数值)
 
    // 请问: “22” === 22  结果为 ?
    alert("22" === 22);  // false  (恒等于, 数值和类型都要相等)
    
</script>

8.4、逻辑运算符

&&true&&false		====>false
||true||false			====>true
! 		非		!true				====>false
false(理解):false,  0,  null,  undefined 
true(理解):true, 非0,  非null,  非undefined

举例:

<script>
 
    // 请问:  8 < 7 && 3 < 4, 结果为 ?
    alert(8 < 7 && 3 < 4);  // false
 
    // 请问:  -2 && 6 + 6 && null 结果为 ?
    alert(-2 && 6 + 6 && null); // null
 
    // 请问:  1 + 1 && 0 && 5  结果为 ?
    alert(1 + 1 && 0 && 5); // 0
 
</script>

8.5、赋值运算符:
赋值运算符的基本用法:
基本的赋值运算符:= (把=右边的数据赋值给左边)
扩展的赋值运算符:+=,-=,*=,/=,%=

//代码1
short s=1;
s=s+1;
//代码2
short s=1;
s=s+1;
因为扩展的赋值运算符其实隐含了一个强制类型转换
s+=1;
不是等价于s=s+1
而是等价于s=(s的数据类型)(s+1)
*/

9、if语句

9.1、if选择结构
在这里插入图片描述
9.2、多重if选择结构
在这里插入图片描述

10、Switch选择结构

  • switch选择结构,可以简化多重if选择结构的复杂语法,但是,它只能做等值判断,不能做区间判断。
  • 在整个switch选择结构中,只有一对()和一对{}
  • ()里面放的是判断的变量,在{}里面通过case后面的固定值跟()里面的变量比较
  • 如果所有的case后面的固定值跟()里面的变量值,都不相等,就执行default语句
    注意:switch里面的case,如果判断成功,后面的case就不会再继续判断了,而是直接执行后续case里面的代码。所以,在每个case语句的最下面,需要添加break语句,表示跳出整个switch结构。
    举例:
<script>

 请输入考试成绩名次,第1名,奖励电脑一部,第2名,奖励手机一个,第3名,奖励手表一个,否则没有任何奖励
        
        var score = parseInt(prompt('请输入名次:'))

switch(score){
            case 1:
                console.log('奖励电脑一部');
                break;
            case 2: 
                console.log('奖励手机一个');
                break;
            case 3: 
                console.log('奖励手表一个');
                break;
            default:
                console.log('啥也没有');
                break;
        }
         </script>

11、循环结构 while、do-while. for

1.while(循环条件){循环体;}
2.do{循环体;}while(循环条件);
3.for(循环变量赋初值;循环条件;循环变量增值){循环语句;}
console.log(...); 以日志的形式在控制台输出结果!

案例:

<script>
 
    // 练习 : 找出 1~100 之间能够被3和7整除的数字个数
 
    var count = 0;
 
    // 1. 遍历 1~100 之间的所有整型数值
    for (var i = 1; i <= 100; i++) {
 
        // 2. 判断
        if (i % 3 == 0 && i % 7 == 0) {
            // alert(i);
            console.log(i);
            // 3. 累加个数
            count++;
        }
    }
 
    // 4. 查看结果
    // alert(count);
    console.log(count);
 

console.log显示如下:
在这里插入图片描述

12、循环嵌套

案例:九九乘法表
在这里插入图片描述
页面显示:
在这里插入图片描述

13、数组

  • 数组就是内层中的一组连续存储空间,用于存储一组连续的数据。

13.1 声明数组

下面这个就是声明数组的例子
int[] arr;
int 数组的数据类型,数组中要存储什么类型的数据
[] 代表它是一个数组
arr 数组的名字,自己定义的

13.2 声明数组并初始化

方式一 静态初始化
数组的数据类型[] 数组名 = new 数组的数据类型[]{元素1,元素2,元素3...};
例:
int[] arr0 = new int[]{2,4,6,8};
这个数组有四个元素  所以它的长度为4
方式二 隐式初始化
数组的数据类型[] 数组名 = {元素1,元素2,元素3...}
例:
double[] arr1 = {2.2,3.3,4.4};
方式三 动态初始化
数组的数据类型[] 数组名 = new 数组的数据类型[长度];
数组名[下标] =;
[长度]:数组的长度,可以存放多少个元素
这里明确一个概念,数组的下标是从0开始计算的
例:
int[] arr2 = new int[3];//[3]代表这个数组可以存放3个元素
arr[0] = 2;//[0]代表数组的第1个数据  将2存进去到数组第1个位置
arr[1] = 4;//[1]代表数组的第2个数据	将4存进去到数组第2个位置
arr[2] = 6;//[2]代表数组的第3个数据  将6存进去到数组第3个位置

13.3 访问数组
我们访问数组一般都是通过下标(索引)来查找的。
举例说明:

int[] arr = {3,6,9,12,15};
//我们用下标来找12,12的下标是多少呢,我们数组的下标都是自动从0开始的编号,
//所以12的下标为3  我们输出看看对不对
int res = arr[3];//这里用了一个变量接收了一下  是可以直接输出的
System.out.println(res);//输出12 

13.4数组的长度

//怎么知道数组的长度是多少,我们这里有一个长度属性length
//使用 数组名.length就可以了 数组最大下标为 数组名.length-1
int[] arr = {21,33,44,55,66,77};
int len = arr.length;
System.out.println(len);//结果为6 正是数组的长度

14.5 遍历数组
我们之前学过循环了,现在用它来遍历数组

int[] arr = {12,34,65,76,89,99};
for(int i=0;i<arr.length;i++){
//数组的下标从0开始的我们将i设为0,arr.length数组的长度
	System.out.println(arr[i]);//正确输出
}

14.6 怎么获取数组中最大的值?

public static void main(String[] args) {
		int[] arr = {3,5,6,8,9,7};
		int max = arr[0];//定义变量,将数组下标为0的元素存入
		for(int i=1;i<arr.length;i++){//因为下标为0的元素存入到变量中了,所以从下标1开始循环
			if(max < arr[i]){//判断当前遍历到的元素是否大于变量max
				max = arr[i];//如果大于变量max ,那就将当前遍历到的元素替换掉变量原先的值
			}//如果不大于,继续循环
		}
		System.out.println(max);//最后输出结果  结果为:9
	}

14.7 冒泡排序?

  • 就是使用循环将数组中的元素按从大到小或从小到大排序好
    思路:
    这里需要使用到两个for循环,外边的循环每循环一次就可以找到一个最大值
    里边的循环每循环一次就产生一次对比,在内层循环中在判断前一个元素是否比后一个元素小,是的话互换位置,最后输出。
    案例:
public static void main(String[] args) {
	int[] arr = {3,11,6,20,9,7};
	//外层循环每循环一次确定一个最大的元素
	for(int i=0;i<arr.length;i++){
		//内层循环每循环一次产生一次对比
		for(int j=0;j<arr.length-1;j++){
			//将当前的元素与后一个元素比较
			if(arr[j]<arr[j+1]){
				//如果当前元素小于后一个元素  互换位置
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	//最后循环输出  从大到小排序
	for(int i=0;i<arr.length;i++){
		System.out.print(arr[i]+"\t");
	}
}

14、字符串常用的方法

14.1、indexOf()和lastIndexOf()方法

  • indexOf():返回字符串中检索指定字符第一次出现的位置,没找到就返回-1
  • lastIndexOf():返回字符串中检索指定字符最后一次出现的位置,没找到就返回-1。
  • 若是只有一个参数,找到之后返回索引位置,没找到返回-1。
<script>
   var str = "abcdef";
   //输出所有字符
   for(var i = 0;i<str.length;i++)
   {
       console.log(str[i]);
   }
   console.log(str.indexOf('c'));
   console.log(str.lastIndexOf('a'));
</script>

console.log显示如下:
在这里插入图片描述

  • 若是有两个参数,参数1为要找的字符,参数2为从哪个字符开始找,找到之后返回索引位置,没找到返回-1。
<script>
   var str = "abcdef";
   console.log(str.indexOf("a", 1));
   console.log(str.lastIndexOf('b', 4));
</script>

console.log显示如下:
在这里插入图片描述

14.2字符串去空-----trim()方法

  • 移除字符串首尾空白
  • 若是字符串中间的空格也要全部去除,需要运用replace()方法使用正则表达式进行去除,不能使用trim()方法。
<script>
	var str = "  abcde fg h ";
   console.log(str.trim());
   console.log(str.replace(/\s/g, ''));
</script>

console.log显示如下:
在这里插入图片描述

14.3字符串拼接方法----concat()方法

  • 连接两个或多个字符串,返回连接后的字符串
<script>
	var str = "abcde";
   var s1 = "apple";
   var s2 = "book";
   console.log(str.concat(s1));
   console.log(str.concat(s1, s2));
   console.log(str.concat(s1).concat(s2));
</script>

console.log显示如下:
在这里插入图片描述

14.4根据字符串索引获取字符—charAt()

<script>
	var str = "abcde";
   console.log(str.charAt(0));
</script>

console.log显示如下:
在这里插入图片描述

14.5字符串截取方法

(1)substr()方法--------从起始索引号提取字符串中指定数目的字符

  • 就是从那开始截,截几个,参数为索引和length
<script>
	var str = "abcdef";
   console.log(str.substr(0, 5));
</script>

console.log显示如下:
在这里插入图片描述
(2)substring()方法----提取字符串中两个指定的索引号之间的字符

  • 就是从哪开始截取到哪结束,两个参数都为索引
<script>
	var str = "abcdef";
   console.log(str.substring(0, 3));
</script>

console.log显示如下:
在这里插入图片描述

14.6字符串转化为数组----split()方法

  • 把字符串分割为子字符串数组
<script>
	var s3 = "abcdefg";//转换为['a','b','c','d','e','f','g']
   console.log(s3.split(''));
   var s4 = "a,b,cd,e,fg";
   console.log(s3.split(','));
</script>

console.log显示如下:
在这里插入图片描述

16.7大小写转换

  • toLocaleLowerCase() --转化为本地格式的小写
  • toLocaleUpperCase() --转化为本地格式的大写
  • toLowerCase()-----------把字符串转换为小写
  • toUpperCase()-----------把字符串转换为大写
<script>
	var str = "abc";
   console.log(str.toLowerCase());
   console.log(str.toUpperCase());
   console.log(str.toLocaleLowerCase());
   console.log(str.toLocaleUpperCase());
</script>

console.log显示如下:
在这里插入图片描述

15、自定义函数

  • 函数是命名的独立的语句段,这个语句段可以被当作一个整体来引用和执行:

格式:

function 函数名(形式参数){函数体}
调用函数:函数名(实际参数);

15.1、函数只有被调用后才会执行
15.2、如果函数需要返回值、直接使用return 返回

<script type="text/javascript">
 
    // 定义一个函数 : function
    function demo() {
        return 666;
    }
 
    // 调用函数 :
    alert(demo());
 
</script>

15.3、如果函数需要传递参数、不需要指定参数的类型、直接使用变量即可

<script type="text/javascript">
 
    // 定义一个函数 : function
    function demo1(a, b) {
        return a + b;
    }
 
    // 调用函数 :
    alert(demo1(20, 20));//显示40
 
</script>

16、对象

  • 定义对象有两种方式:
    1.使用字面量方式直接定义
    2.使用构造函数创建对象

使用字面量方式直接定义对象
在这里插入图片描述
使用构造函数创建对象

  • 构造函数,也是一个函数,通常情况下该函数的首字母要大写
  • 在该函数的内部,使用this关键字定义构造函数的成员
  • 构造函数也称之为:类,类就是类型
    在这里插入图片描述

17、this

  • this也是代名词,它的场景就是函数。this是函数里的内置对象。
    一、this的四种情况:
    (1)、当this所在函数是事件处理函数时。this表示事件源1
    (2)、当this所在函数是构造函数时,this是new出来的对象
    (3)、当this所在函数时类的方法时,this是调用方法时的对象(写在方法调用前面的那个对象(主语))
    (4)、当this所在函数不是以上情况时,this是window对象。
    要分辨出this是谁,需要看调用。而不是只看函数的定义。

二、call和apply,bind改变this指向。
如果使用了call,apply或者bind,那么this就会发生变化。即:没有使用call,apply,bind时,this是以上四种场景。
、call和apply改变this的指向

函数名.call(对象) call函数里的对象(实参)就是this。

call或者apply会直接调用函数。只是临时改变一下。

2、bind改变this的指向

函数名.bind(对象) bind函数里的对象(实参)就是this。

bind不会调用函数。而会产生新的函数。新产生的函数里,this永远都是绑定的this。

三、箭头函数
箭头函数里,根本就没有this之说。所以,在看this的指向时,忽略掉箭头函数。
案例:
在这里插入图片描述
console.log显示如下:
在这里插入图片描述

二、js DOM

js DOM操作

方法与功能

核心内容就是利用增删改查

查询(获取元素):

  • getElementById()方法,根据id选择器的名称获取指定的dom元素,如果该id名称不唯一,只能获取第一个元素。

  • getElementsByClassName()方法,根据class选择器的名称获取所有的dom元素

  • getElementsByName()方法,根据name属性的名称获取所有的dom元素

  • getElementsByTagName()方法,根据标签的名称获取所有的dom元素

  • 属性获取

  • getAttribute(获取属性值)

  • getAttributeNode(获取属性节点)

增加:

1、创建

  • document.createElement
  • document.createTextNode
  • document.createAttribute
  • innerHTML
  • innerText
    2、加入
  • appendChild (追加到结尾处)
  • innerHTML
  • insertBefore (将元素插入到某一个元素的前面)

3、其他操作

style 的操作
setAttribute( 属性名, 属性值 )

删除:

1、删除元素

removeChild
removeAttribute
removeAttributeNode(先获得这个节点,然后删除)

修改:

1、修改节点

删除(remove)节点再加入(append)
2、修改文本

innerHTML
innerText
节点操作(把节点删掉在插入)
nodeValue(可以读取文本 可以修改文本)
3、修改样式

style.xxx = vvv;
setAttribute
4、修改属性

.xxx = vvv;
setAttribute
1、获取属性

var attrNode = node.getAttributeNode( '属性名' );//获得属性节点对象
attrNode.nodeValue;
//简化
node.getAttribute( '属性名' );//快速获取对应属性值的做法

2、删除子元素

	//从node中删除一个div
	node.removeChild( div );
	//如果div变量不存在
	var div = document.getElementById( '...' );
	node.removeChild( div );
	//假设node元素中只有一个节点div
	node.innerHTML = '';

3、删除属性

	//方法一
	var attrNode = node.getAttributeNode( '属性名' );
	node.removeAttributeNode( attrNode );
	//方法二
	node.removeAttribute( '属性名' );
	//getAttribute(简化API)(获取属性的值 属性由键 : 值 对构成,通过键获得值)
	//getAttributeNode(标准DOM API)(获得属性节点对象 属性名或者属性值都是系节点对象的组成部分)

常用的dom方法

- document.getElementById(“box”);//通过id获取标签
- document.getElementsByTagName(“div”);根据标签名获取页面元素

设置标签的样式等方法
对标签的样式设置使用.style

var box=document.getElementById("box");
box.style.width="100px";
box.style.backgroundColor="#ff00000"//带有段横线的属性要是用驼峰命名的方式。

设置标签的内容。
box.innerHtml=”哈哈”;
事件类型

  • 点击事件 onclick
  • 鼠标移入 onmouseover
  • 鼠标移出 onmouseout

类名属性
访问标签的类名属性通过 标签.className
焦点事件

  • onfocus 文本框获取焦点时触发事件

  • onblur 失去焦点时触发事件
    表单的常用属性:

  • input获取内部文本 使用value ipt.value

  • 节点
    dom – 文档对象模型 document是dom中的顶级对象
    dom把html页面看作一个树结构
    dom树中的每一个部分我们都称为节点。
    在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:19:49  更:2021-08-10 13:21:35 
 
开发: 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/24 9:19:52-

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