JavaScript初见

书写位置

和css差不多

  1. 行内
  2. script标签内
  3. script所引的js文件

输入输出语句

输入

prompt();

输出

console();// 控制台显示
alert('');//弹出框
alert('字符串' + 变量 + ’\n‘);


变量

声明

var neme = '原神';
var  tele = 1;

不用管类型,真不错啊

**js中变量的声明不需要位于使用处的前面(仅限var,let不行)**基于js引擎的工作方式,js事先解析所有代码而后执行,只要有声明即可

console(a);
var a = 10;

数据类型

和C语言差不多,换汤不换药。
不过JavaScript是弱类型的,也就是不用声明变量的类型,js引擎会在运行的过程中自动识别

数字型(整数小数一家亲了)

浮点数有精度限制

0.1+0.2 != 0.3

Number.MAX_VALUE最大值
Nunber.MIN_VALUE最小值
特殊值

在这里插入图片描述

判断是否是数字的函数isNaN()

字符串型

单引号和双引号都可以作为标志,但是多个单引号出现时取就近原则

var self = '我是’你的‘谍‘//会报错,因为’取就近原则
//正确做法
var self = '我是“你的”谍‘
转义符

在这里插入图片描述

长度计算
var name = '萝莉斯';
console.log(name.lenth);
字符串拼接
console('原神’ + ‘启动’);
//输出:原神启动

如果后面加的不是字符串类型,那就转化成字符串类型在拼接

使用

var tele = 13993399999
console.log('我的电话是' + tele + '\n你猜对了吗?');

布尔型

true and false

undefined型

在这里插入图片描述

NULL类型

在这里插入图片描述

bigint大整数

只用来表示整数,
无位数限制
数字后面必须加后缀n
不能与number类型混用

数据类型转换

转换成字符串型

在这里插入图片描述

var name = 123;
//1.
name = name.toString();
//2.
name = String(name);
//3.
name = name + '字符串
转换成数字型

在这里插入图片描述

parse型

在这里插入图片描述

Number()
var name = '123'
name = Number(name); 
隐式转换(- * /)
console('123' - '120');
//即可
转换成bool型

在这里插入图片描述

操作符

+
++
-
--
*
/
%
?  : 
void
**(指数运算符)
//关系运算符
< >
>= <=
==
!=
===//严格相等(类型和值都相等)
!==//严格不相等(类型和值都不相等)
!
&& 
||
&
|

数组

基本使用

在这里插入图片描述
2. []内写arr.length的特殊用法
在这里插入图片描述

函数

基本使用

在这里插入图片描述

参数问题(实参可以比形参少)

在这里插入图片描述

return

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

arguments

JavaScript函数中内置的一个伪数组,里面存实参。

function get()
{console.log(arguments);	
}
get(1,2,3,4,5);
//此时argumens里存的就是1,2,3,4,5

块级作用域

花括号{}内的就是一个块
JavaScript中没有块级作用域
在这里插入图片描述

作用域链


函数在执行的过程中,先从自己内部寻找变量,如果找不到,再从创建当前函数所在的作用域去找,从此往上,也就是向上一级找,直到找到全局作用域还是没找到。

子级能查找父级,父级不能查找子级


上例子:

var a = 1;
function fn1() {var a =2;var b ='22';fn2();function fn2 0) {var a = 3;fn3();function fn3() {var a = 4;console.log(a); //a的值 ?   4console.log();//b的值 ?   ‘22’}}
}
fn1();

预解析

在这里插入图片描述

案例

在这里插入图片描述

在这里插入图片描述

结果是
在这里插入图片描述

关于声明的小知识:
var a=b=c=9;
意思是
c=9;
b=c;
var a =b;
只有a是标标准准的声明了,b和c都是隐式全局变量,没有声明直接赋值,在严格模式(use strict)下,就会报错

对象

概念

是对现实生活中一类具有共同特征的事物抽象
类的实例化就是对象

比如:
人是类
张三就是对象

使用

  1. 声明用字面量{}
  2. 类中的属性(成员)用键值对 1 声明
  3. 内部可创建函数(行为)
  4. 调用方法
  • 对象名.属性名
  • 对象名[‘属性名’]
    在这里插入图片描述

创建方法(new对象)

  • 直接
var object = {属性一:值,属性二:值,方法:function() {行为;}
}
  • 为了避免创建相似对象时的重复代码,引入了构造函数(为什么不用类?)
function Star(参数1,参数2,参数3) {this.属性1:参数1,this.属性2:参数2,this.属性3:参数3,this.方法 = function(参数) {console.log(参数);		//方法(行为的具体内容)}}
var ldh = new Star('刘德华' . '男' , 20);
console.log(ldh.属性一);
console.log(ldh['属性1']);

注意事项

在这里插入图片描述

遍历对象的属性

在这里插入图片描述

内置对象

(库函数?)

Math对象

内置属性:
如:PI
内置方法(行为/函数):

  • Math.max()
  • Math.abs()(绝对值)
  • Math.floor() / Math.ceil() / Math.round()
    向下 向上 四舍五入 取整
    Math.round特殊在这里插入图片描述
  • Math.random() 取随机数
  1. 无参数
  2. 取0-1内的任一小数
    在这里插入图片描述

日期对象Date

Math是个对象,直接用即可
Date是个构造函数,需要你先创建一个对象(用new操作),然后才能调用date中的属性和行为

方法:
在这里插入图片描述


例子:

在这里插入图片描述

在这里插入图片描述

获取时、分、秒

var time = new Date();
var h = time.getHours();
h = h<10 ? '0' + h : h; //三元运算符,实现补零

上例中Date()里面没有参数,下面是加参数的版本

var time = new Date('2023-12-19 8:8:8');

写参数时有两种写法:
  1. 字符串型(常用)
  2. number类型, 也行,但是月份的部位有问题:
    在这里插入图片描述

获得总的毫秒数(时间戳)

在这里插入图片描述

倒计时(用时间戳)

()
时间戳有其独特性,两个时间戳之差,然后换算成天时分秒

数组对象Array()

数组创建

两种方式
在这里插入图片描述

检测是否是数组

第一种:
在这里插入图片描述
第二种:
在这里插入图片描述

增删改查元素


在这里插入图片描述


在这里插入图片描述

数组排序

在这里插入图片描述

数组元素查找

indeOf();
lastindexOf();
在这里插入图片描述

数组去重

var arr = [1,1,2,3,4,5,6,6];
function unique(arr)
{var newArr = new Array();for(var i =0;i<arr.length;i++){if(newArr.indexOf() == -1 )//用到了数组索引函数{ newArr = arr[i];}return newArr;}
}
console.log(unique(arr));
//结果[1,2,3,4,5,6]

转化成字符串

在这里插入图片描述

其他

在这里插入图片描述
splice()

加元素或者删元素

var arr = [12,23,34,45,56,67,78,89];
splice(2,3,'原神,启动');
//结果是:12,23,'原神,启动',67,78,89

字符串对象

基本包装类型

在这里插入图片描述
感觉就是给简单类型加了一些操作和属性,更方便了

字符串的不可变性

对字符串的操作不会更改字符串本身,操作后,会生成新的字符串
所以,尽量不要对字符串进行大量的重复操作(赋值,追加)

查找字符

找到该字符在字符串中的位置
在这里插入图片描述

 var name = 'zhangada';console.log(name.indexOf('a'));//2

根据位置返回该位置的字符

var name = '张三';
var i = name.charAt(1);
console.log(i);//三

在这里插入图片描述

拼接和截取

在这里插入图片描述

var str = '原神,'
console.log(str.concat('启动' , '!'));//原神,启动!

替换与转换

在这里插入图片描述

简单数据类型和复杂数据类型

在这里插入图片描述
复杂数据传参:

function Person(name) {this.name = name;
}
var p = new Person('mzj');
function change(x) {x.name = 'zsy';console.log(x.name); //zsy
}
console.log(x.name); // zsy

意思是,复杂数据传参,会更改原数据
在这里插入图片描述
这里有解释2

DOM

文档对象模型document object model

获取元素

id获取

var name = document.getElementById('id名')//驼峰命名法

在这里插入图片描述
document意思是文档,即html文件

标签名获取

在这里插入图片描述

  1. 伪数组形式存储
  2. element 可以是父级标签,以达到精准定位

类名获取 + H5新增方法(常用)

在这里插入图片描述

<!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><div class="box">htmlcssjavascript</div><script>var con = document.getElementsByClassName('box');var com = document.querySelector('box'); //只会选中第一个符合条件的</script>
</body>
</html>

获取body和html

在这里插入图片描述

事件

是什么

事件源:观测对象是谁
事件类型:怎么触发
事件处理程序:触发后要干什么?
在这里插入图片描述

怎么做

在这里插入图片描述

例子
<!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>
<button class="box">原神</button><script>var con = document.querySelector('.box');con.onclick = function() {alert('启动!');} </script>
</body>
</html>

这是鼠标事件类型:
在这里插入图片描述

操作元素修改元素内容

例:
创造一个按钮,按了原神就启动了

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style> //style这里都不重要video {display: block;width: 192px;height: 108px;}p {width: 200px;height: 188px;background-color: #123aed;text-align: center;font-size: 25px;line-height: 188px;}p:hover {color: bisque;background-color: #111111;}</style>
</head>
<body><button class="box">原神</button><p></p><script>//重点在这里var con = document.querySelector('.box');var vid = document.querySelector('p');con.onclick = function() {vid.innerText = '启动';} </script>
</body>
</html>

关键字在于:innerText

innerText与innerHTML

在这里插入图片描述
innerHTML中可以加入html标签

例:分时问候

在这里插入图片描述

操作元素修改元素属性

在这里插入图片描述

修改表单属性(input特殊)

在这里插入图片描述


input-text的文字内容无法通过innerHTML来修改,要通过其特殊的value属性来修改


示例:
在这里插入图片描述


例:密码显示

input的password改为text即可
在这里插入图片描述

修改样式表(CSS)

用法

在这里插入图片描述

  1. className法
    1中的方法一个一个的添加太慢了,所以更改方法
    这个方法的本质就是在你操作之后,给事件源(如div)添加一个类,这个类在css文件中有定义
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.change {font-size: 15px;width: 200px;height: 200px;line-height: 200px;background-color: #188189;}</style>
</head>
<body><div>devil may cry 5</div><script>var div = document.querySelector('div');div.onclick = function() {this.className = 'change';}</script>
</body>
</html>

注意:
4. 修改样式的属性值时,要用‘’或者“”来包裹。
5. 用.来操作
6. 事件处理程序的写法:事件源.属性/内容/样式.值/文字/样式属性 = ‘’
具体的值都要用引号来包裹

例:原神启动!
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>video {width:960px ;height :540px;}</style>
</head>
<body><button class="box">原神</button><p></p><script>var con = document.querySelector('.box');var vid = document.querySelector('p');con.onclick = function() {vid.innerHTML = '<video src="../video/2.1版有音频版(Av914559934,P2).mp4" controls autoplay="true" ></video>';vid.style.width = "960px";vid.style.height = '540px'} </script>
</body>
</html>
例:循环精灵图

在这里插入图片描述
精灵图规律分布,目标位置也规律分布,小图大小相同
可以省很多重复工作

操作元素总结

在这里插入图片描述

例:多个按钮(排他性练习)
<body><button>KO</button><button>KO</button><button>KO</button><button>KO</button><button>KO</button><button>KO</button><script>var i=0;var btns = document.querySelectorAll('button');for(i=0;i<btns.length;i++){btns[i].onclick = function(){for(var j=0;j<btns.length;j++)//排他性在这里,先把所有的属性都清除,然后再做出想要的操作;{btns[j].style.backgroundColor = '';}this.style.backgroundColor = 'black';}}</script>
</body>
例:换背景
	<div><li><img src="../img/images/112233.jpg" alt=""></li><li><img src="../img/images/原神.png" alt=""></li><li><img src="../img/images/QQ截图20231130112230.png" alt=""></li></div><script>var imgs = document.querySelectorAll('img');for(var i = 0; i<imgs.length; i++){imgs[i].onclick = function() {document.body.style.backgroundImage = 'url(' + this.src + ')';}}</script>

注意细节:给document.body.style.backgroundImage赋值时,要用=;用’url(’ + this.src + ’ )3’ ;

例:隔行变色

在这里插入图片描述
关键:
两个事件类型
onmouseover
onmouseout

例:复选框,多选
    <div><table><thead><tr><td><input type="checkbox" id="all"></td></tr></thead><tbody id="tb"><tr><td><input type="checkbox" id=""></td></tr><tr><td><input type="checkbox" id=""></td></tr><tr><td><input type="checkbox" id=""></td></tr><tr><td><input type="checkbox" id=""></td></tr></tbody></table></div><script>var all = document.querySelector('#all');var boxs = document.querySelector('#tb').querySelectorAll('input');all.onclick = function() {for(var i=0;i<boxs.length;i++){boxs[i].checked = this.checked;}}for(var i=0;i<boxs.length;i++){boxs[i].onclick = function () {var flag = true;for(var i=0;i<boxs.length;i++){if(boxs[i].checked == false){flag =false;break;}}all.checked = flag;}}</script>

注意:

  1. 检测选项框用checked属性

属性值二讲

固有属性值

读:
element.属性名;
element.getAtrribute(‘属性名’);
写:
element.属性名 = 值;
element.setAtrribute(‘属性名’, ‘属性值’);//注意属性值有的加引号,有的不加

移除属性:
element.removeAttribute(‘属性名’);

自定义属性(读 写 移除)

e.g.

<div class="box" index="1"></div>

index就是自定义属性值
读:
element.getAtrributte(‘属性名’);
写:
element.setAttribute(‘属性名’, ‘属性值’);

另:移除属性
element.removeAttribute(‘属性名’);

自定义属性

目的:保存并使用一些数据,如索引index
注意:定义时容易引起歧义,所以习惯性的都加一个‘data’前缀


获取:
在这里插入图片描述

节点操作

用document+API的方式缺陷较大:
逻辑性差,容易乱,取值繁琐,不好写


所以聪明的程序员发明了节点操作这个东西
它将整个文档视为一棵树,划分成清晰的节点
在这里插入图片描述
通过API得到一个节点
然后通过父子兄的关系得到其他节点
这种方法逻辑性强,易操作

父节点

element.parentNode
在这里插入图片描述

子节点

操作:
element.children/childNode
在这里插入图片描述
得到收尾元素节点
图中:
1.的方法太繁琐
2.的方法兼容IE9
3.的方法才是常用的
在这里插入图片描述


  1. 用冒号来声明变量(同CSS) ↩︎

  2. 栈区:系统自动为函数、变量之类的操作申请内存的一个空间。堆区:是复杂数据类型本体数据存储的地方,复杂数据类型的名字在栈区存放,无论是初始名还是函数参数名,都指向同一块空间(传地址了) ↩︎

  3. 这里不能加分号,否则无法运行 ↩︎

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

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

相关文章

Logback框架基本认识

文章目录 一.什么是Logback1.1 初识Logbcak 二.Logbcak的结构三.日志的级别四.配置组件详解4.1 logger 日志记录器属性的介绍如何在配置文件里配置 4.2 appender 附加器 配合日志记录器的输出格式4.2.1 控制台附加器4.2.2 文件附加器4.3.3滚动文件附加器 4.3 Filter: 过滤器&am…

记录一次应用服务响应慢问题排查过程

3个自建系统使用了一个统一的外部系统接入服务&#xff0c;该服务主要是统一处理外部系统对接&#xff0c;处理掉数据鉴权等问题&#xff0c;提供内部鉴权接口给自己的服务使用。类似一个对接网关。 问题背景 研发反应&#xff0c;后端接口请求时快时慢&#xff0c;影响演示效…

【MATLAB】快速绘制曲线图的形状,粗细,颜色

目录 MATLAB 快速绘制曲线图的形状&#xff0c;粗细&#xff0c;颜色 1.通过改变R-G-B 的值改变线条的颜色&#xff1a;2.通过改变c∈[1,∞)的值改变线条的粗细&#xff1a;3.线条形状&#xff0c;粗细&#xff0c;颜色选择&#xff1a;4.Matlab中画图实现案例&#xff1a; MA…

js封装根据年月日获取星座效果demo(整理)

//根据年月日获取星座 function getZodiacSign(dateString) {// 用法:const dateStr 2024-01-11;// const zodiacSign getZodiacSign(dateStr);const date new Date(dateString);const month date.getMonth() 1;const day date.getDate();if ((month 1 && day &…

Python教程39:使用turtle画美国队长盾牌

---------------turtle源码集合--------------- Python教程36&#xff1a;海龟画图turtle写春联 Python源码35&#xff1a;海龟画图turtle画中国结 Python源码31&#xff1a;海龟画图turtle画七道彩虹 Python源码30&#xff1a;海龟画图turtle画紫色的小熊 Python源码29&a…

【uview2.0】Keyboard 键盘 与 CodeInput 验证码输入 结合使用 uview

https://www.uviewui.com/components/codeInput.html &#xff08;CodeInput 验证码输入&#xff09; https://www.uviewui.com/components/keyboard.html &#xff08;Keyboard 键盘&#xff09; <u-keyboard mode"number" :dotDisabled"true" :show&q…

一体式气象站的优点是什么?带大家了解一下

一体式气象站是一款高度集成、低功耗、可快速安装、便于野外监测使用的高精度自动气象观测设备。 一体式气象站的优点主要体现在以下几个方面&#xff1a; 集成度高&#xff1a;一体式气象站集成了多种气象传感器、数据处理单元、显示单元和通讯模块等&#xff0c;可以同时监…

2019年认证杯SPSSPRO杯数学建模B题(第一阶段)外星语词典全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 基于方差分布的方法对未知语言文本中重复片段的自动搜索问题的研究 B题 外星语词典 原题再现&#xff1a; 我们发现了一种未知的语言&#xff0c;现只知道其文字是以 20 个字母构成的。我们已经获取了许多段由该语言写成的文本&#xff0c;但…

2024年【熔化焊接与热切割】考试内容及熔化焊接与热切割免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试内容是安全生产模拟考试一点通总题库中生成的一套熔化焊接与热切割免费试题&#xff0c;安全生产模拟考试一点通上熔化焊接与热切割作业手机同步练习。2024年【熔化焊接与热切割】考试内容及熔化…

ceph、gluster、longhorn选型对比

Ceph Ceph是一个分布式的存储系统&#xff0c;可以在统一的系统中提供唯一的对象、块和文件存储。 名词解释&#xff1a; RADOS&#xff1a; 由自我修复、自我管理、智能存储节点组成的可靠、自主、分布式对象存储LIBRADOS&#xff1a; 一个允许应用程序直接访问 RADO 的库&…

怎么做拼团链接_生鲜果蔬商家都在用的小程序拼团系统

拼团链接&#xff1a;重塑营销新格局 在当今这个信息爆炸的时代&#xff0c;消费者面对海量信息&#xff0c;选择变得尤为重要。如何在众多品牌中脱颖而出&#xff0c;让消费者愿意主动为你驻足&#xff1f;答案就是——拼团链接。 拼团&#xff0c;是一种社交电商的创新形式。…

Clickhouse实时指标加工

Starwift实时指标加工方案 方案介绍 ​ Starwift(ClickHouse)是京东云上的一款云原生数据仓库,为用户带来极速分析体验,能够支撑实时数据分析和海量数据离线分析。便捷的弹性扩缩容能力,极致分析性能和丰富的企业级特性,助力客户数字化转型。实时指标加工是从离线指标加…

Windows RPC运行时漏洞事后总结

2022年4月前后&#xff0c;Windows RPC运行时被曝出存在远程代码执行漏洞&#xff0c;当时曾引起很多人广泛关注。微软很快做出反应&#xff0c;发布补丁程序进行修补。这次事件中&#xff0c;Windows远程过程调用&#xff08;RPC&#xff09;运行时共出现三个关键漏洞&#xf…

Xcode15一个xcworkspace管理多个xcodeproj从零开始,一个主程序,多个子程序,一个主程序引用多个静态库

创建主程序&#xff1a;MainProject 目录结构&#xff1a; sandbox设置成NO&#xff1a;否则Xcode15不能运行 创建子程序 创建Framework 创建多个子程序后的目录结构 在主程序的Podfile中添加代码 # Uncomment the next line to define a global platform for your project pla…

Zabbix6.4 监控系统 密码忘记怎么办

Zabbix6.4 监控系统 密码忘记怎么办&#xff1f; 如下图 本次主要介绍在Zabbix6.4中重置用户密码的步骤。 步骤 如果您忘记了Zabbix密码并且无法登录&#xff0c;请向Zabbix管理员求助。 超级管理员用户可以在用户配置表单中更改所有用户的密码。 如果超级用户忘记了密码&a…

U8 内嵌.Net UserControl,winform挂菜单

目录 1.创建类库2.项目引用U8安装路径dll&#xff1a;3.新建类MyLoginable 继承 NetLoginable&#xff1a;4.新建类 MyNetUserControl 实现接口 INetUserControl&#xff1a;5.新建类 NetSampleDelegate 实现上面的CreateToolbar方法6.新建你的用户控件7.最后一步到UAP挂接菜单…

【设计模式-02】Strategy策略模式及应用场景

一、参考资料 Java 官方文档 Overview (Java SE 18 & JDK 18)module indexhttps://docs.oracle.com/en/java/javase/18/docs/api/index.html Java中使用到的策略模式 Comparator、comparable Comparator (Java SE 18 & JDK 18)declaration: module: java.base, pa…

计算数学表达式的程序(Java课程设计)

1. 课设团队介绍 团队名称 团队成 员介绍 任务分配 团队成员博客 XQ Warriors 徐维辉 负责计算器数据的算法操作&#xff0c;如平方数、加减乘除&#xff0c;显示历史计算记录 无 邱良厦&#xff08;组长&#xff09; 负责计算器的图形设计&#xff0c;把输入和结果显…

模型评估:ROC曲线

二值分类器&#xff08;Binary Classifier&#xff09;是机器学习领域中最常见也是应用最广泛的分类器。评价二值分类器的指标很多&#xff0c;比如precision、recall、F1 score、P-R曲线等。相比而言&#xff0c;ROC曲线有很多优点&#xff0c;经常作为评估而知分类器最重要的…

斯坦福Mobile ALOHA提到的ACT之外的另两项技术:Diffusion Policy、VINN

前言 本文接上一篇文章《斯坦福机器人Mobile ALOHA的关键技术&#xff1a;动作分块ACT的算法原理与代码剖析》而来&#xff0c;当然最开始本文是作为上一篇文章的第二、第三部分的 但因为ACT太过关键&#xff0c;除了在上一篇文章中写清楚其算法原理之外&#xff0c;还得再剖…