概念:Javascript是一种基于对象和事件驱动的客户端脚本语言,并具有相对的安全性,主要是用于创建交互性较强的动态页面。
(1) 内嵌式:使用标签对
目前建议放到body里面
<body>
此处放div代码即可
<script>
里面放js语句
script>
body>
(2) 外部:链接外部的JavaScript文件
创建后缀名为js的文件,在HTML文件里面引入。
<script src="./js/index.js">
script>
(3) 行内:javascript伪URL引入
用法:javascript:javascript脚本代码
例如:
(1)警示对话框alert()
(2)提示对话框prompt()
(3)确认框confirm()
(4)页面写入document.write()
直接显示在HTML文挡里,该输出语句会解析HTML标签。 “\n”使用在document.write()中,只起到换行的作用
(5)控制台输出console.log()
,\n可在内使用
变量就是一个容器, 用来存放数据的。
变量是程序在内存中申请的一块用来存放数据的空间。
必须用引号引起来
声明变量,但未赋值
(1) object类型object
(2) 数组array
(3) 函数function
(1) typeof( ):用来检测给定变量的数据类型
(2) Boolean( ):把值转换为Boolean类型
(3) parseInt():用于将字符串转换成整数数值。
(4) parseFloat():用于将字符串转换成浮点型数值。
(5) Number( ):把值转换成数字
(6) String( ):把值转换成字符串
(7) toString():将值转换成字符串
(8) toFixed( ):把值按照指定的小数位返回
举例: alert(“软件系”.length);//3
正确示范:“ 我最喜欢 ‘乒乓球’ 运动 ” 或者 ‘ 我最喜欢 “乒乓球” 运动 ’
利用算术运算隐式转换为数值型
加(+)、减(-)、乘(*)、除(/)、取余(%)、自增(++)、自减(–)。
特别注意:当+号的其中一侧或者两侧是字符的时候,+充当连接符的作用。如:‘a’ + 1、2 + ‘a’、‘c’ + ‘a’。
=(赋值)、+=(加赋值)、-=(减赋值)、*=(乘赋值)、/=(除赋值)、%=(取余赋值)
>(大于)
<(小于)
==(等于)、
!=(不等于)
>=(大于等于)
<=(小于等于)、
!==(严格不等于,比较类型和值)
===(全等,会比较类型和值)
+
与(&&)、或(||)、非(!)
1.概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值 true / false 作为比较运算的结果。
2.逻辑与&&:两边都是true才返回true ,否则返回false
3.逻辑或||:两边都是false才返回false ,否则都为true
4.逻辑非! :也叫作取反符,用来取一个布尔值相反的值,如true的相反值是false
5.加赋值的用法:age += 2 等价于 age = age + 2;其他同理可得。
(1)
if(表达式){ 表达式为真则执行此花括号里面的代码 }
(2)
if(表达式){
表达式为真则执行此花括号里面的代码
}else{
表达式为假则执行此花括号里面的代码
}
(3)
if (表达式) {
}else if (表达式2) {
}else{
}
语法说明:
- else if是else和if两个关键字, 中间使用空格进行间隔, 不要粘连在一起书写。
- 条件1到条件n都是boolean类型
- else if语句可以有任意多句
- 最后的else语句为可选
- 如果功能代码部分不是语句块, 也就是不用大括号, 就只能写一句。最好是都写上花括号。
- 执行流程:
当条件1成立时, 则执行功能代码1;
当条件1不成立且条件2成立时, 则执行功能代码2;
如果条件1、 条件2都不成立且条件3成立, 则执行功能代码3,
依次类推, 如果所有条件都不成立, 则执行else语句的功能代码。
举例:
提示用户输入0100的数字,如果输入的不是数字则提示“非法输入”;如果输入的数字不在0100之间,则提示“不在范围之内”,否则提示“在范围之内”。
① 一般情况下,它们两个语句可以相互替换
② switch…case 语句通常处理 case为比较确定值的情况, 而 if…else…语句更加灵活,常用于范围判断(大于、等于某个范围)
③ switch 语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else 语句有几种条件,就得判断多少次。
④ 当分支比较少时,if… else语句的执行效率比 switch语句高。
⑤ 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰。
执行思路:
① 先执行条件表达式,如果结果为 true,则执行循环体代码;如果为 false,则退出循环,执行后面代码
② 执行循环体代码
③ 循环体代码执行完毕后,程序会继续判断执行条件表达式,如条件仍为true,则会继续执行循环体,直到循环条件为 false 时,整个循环过程才会结束
注意:使用 while 循环时一定要注意,它必须要有退出条件,否则会成为死循环。
执行思路:
①先执行一次循环体代码
②再执行条件表达式,如果结果为 true,则继续执行循环体代码,如果为 false,则退出循环,继续执行后面代码
注意:先再执行循环体,再判断,我们会发现 do…while 循环语句至少会执行一次循环体代码
执行思路:
(1)初始化变量,初始化操作在整个 for 循环只会执行一次。
(2)执行条件表达式,如果为true,则执行循环体语句,否则退出循环,循环结束。
(3)执行操作表达式,此时第一轮结束。
(4)第二轮开始,直接去执行条件表达式(不再初始化变量),如果为 true ,则去执行循环体语句,否则退出循环。
(5) 继续执行操作表达式,第二轮结束。
(6)后续跟第二轮一致,直至条件表达式为假,结束整个 for 循环。
执行思路:
内层循环可以看做外层循环的语句
内层循环执行的顺序也要遵循 for 循环的执行顺序
外层循环执行一次,内层循环要执行全部次数
continue 关键字用于立即跳出本次循环,继续下一次循环(本次循环体中 continue 之后的代码就会少执行一次)。
break 关键字用于立即跳出整个循环(循环结束)。
函数:就是封装了一段可被重复调用执行的代码块。
// 声明函数
function 函数名() {
//函数体代码
}
调用函数三种方式:
(1)事件名 = 函数名()
<button onclick="test()">按钮</button>
function test() {
alert(1);
}
(2)函数名()【通过调用函数名来执行函数体代码,调用的时候千万不要忘记添加小括号】
function test() {
alert(1);
}
test();
(3)事件名 = 函数名【之后会细讲,目前先了解。】
var el = document.getElementById('test');
el.onclick = function(){ alert(1) };
// 带参数的函数声明
function 函数名(形参1, 形参2 , 形参3…) { // 可以定义任意多的参数,用逗号分隔
// 函数体
}
// 带参数的函数调用
函数名(实参1, 实参2, 实参3…);
// 声明函数
function 函数名(){
...
return 需要返回的值;
}
// 调用函数
函数名(); // 此时调用函数就可以得到函数体内return 后面的值
举例:
function fn1() {
console.log(111);
fn2();
console.log('fn1');
}
function fn2() {
console.log(222);
console.log('fn2');
}
fn1();
https://www.runoob.com/jsref/met-win-settimeout.html
setTimeout(function () {
alert(1);
}, 1500);
https://www.runoob.com/jsref/met-win-setinterval.html
setInterval(function () {
alert(1);
}, 1500);
clearTimeout(定时器名称);
clearInterval(定时器名称);
https://www.runoob.com/jsref/dom-obj-event.html
学习网址:https://www.runoob.com/jsref/jsref-obj-string.html
String类是字符串类型(String)的封装类,它允许用户使用String类的方法和属性操作初始的字符串类型值(或说:字符串可以直接使用String类中的属性和方法)
A、 直接声明字符串常量【最常用】,格式:
var 字符串变量=“字符串”;//也可以是单引号
//此时的字符串其实就是字符串对象,可以使用String类中的属性和方法
var str = ‘欢迎大家学习Javascript’;
B、使用new关键字实例化字符串对象,格式:
var 字符串对象=new String(字符串);
var str = new String(‘世界灿烂盛大,欢迎回家。’);//实例化String类
常用属性:length
功能:该属性用来返回字符串中的数量(也可以获取数组的长度)。
语法:对象名.length
(1)charAt() : 可返回指定位置的字符。
语法:stringObject.charAt(index)
字符串中第一个字符的下标是 0。如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符。
(2)substr() :可在字符串中抽取从 start 下标开始的指定数目的字符。
语法:stringObject.substr(start,length)
(3)replace() :用于在字符串中用一些字符替换另一些字符
语法:stringObject.replace(substr,replacement)
学习网址:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/random
Math类不需要创建,而直接使用。Math类的所有属性和方法都是静态的,只需使用语法“Math.方法名(参数)”或“Math.常量名”来调用即可,不需要实例化。
var pi=Math.PI;//访问属性
console.log(pi)//3.1415926…
PI:圆周率 Math.PI
abs(x) 返回 x 的绝对值。
ceil(x) 对数进行上舍入。
floor(x) 对 x 进行下舍入。
round(x) 四舍五入。
random() 返回 0 ~ 1 之间的随机数,包含0,不包含1。
sqrt(x) 返回数的平方根。 console.log(Math.sqrt(16))//4
Math.floor(Math.random() * (max - min + 1) ) + min
学习网址:https://www.runoob.com/jsref/jsref-obj-array.html
学习网址:https://www.runoob.com/jsref/jsref-obj-date.html
数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。
var 数组名 = new Array();
var arr = new Array();//创建一个新的空数组
//添加数组元素
arr[0] = '许言午';
var arr = [ ];
https://www.runoob.com/jsref/jsref-obj-array.html
concat() 连接两个或更多的数组,并返回结果。 str1.concat(str2)
isArray() 判断对象是否为数组。 Array.isArray( arr )
join() 把数组的所有元素放入一个字符串。 分隔符 arr.join(‘&’)
pop() 删除数组的最后一个元素并返回删除的元素。 arr.pop()
push() 向数组的末尾添加一个或更多元素,并返回新的长度。 arr.push()
reverse() 反转数组的元素顺序。arr.reverse()
shift() 删除并返回数组的第一个元素。
slice() 选取数组的一部分,并返回一个新数组。 数组截取slice(开始索引,结束的索引)
sort() 对数组的元素进行排序。
splice() 数组删除splice(开始的索引,要删除的个数) 返回被删除的新数组,会影响原数组。
toString() 把数组转换为字符串,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
举例:从大到小排序(从小到大):
var arr = [1, 3, 16, 4, 8];
arr.sort(
function(a, b) {
return a - b;//升序
//return b - a;//降序
}
)
console.log(arr);
举例:随机点名
https://blog.csdn.net/xulihua_75/article/details/124641319
indexOf() 数组中查找给定元素的第一个索引, 存在返回索引号,不存在返回-1
lastIndexOf() 在数组中的最后一个索引, 存在返回索引号,不存在返回-1 【倒着找】
举例:
arr.indexOf(‘数组元素名称’)
案例:数组去重
https://www.runoob.com/js/js-obj-date.html
var nowTime = new Date();
console.log(nowTime);
如果Date()不写参数,就返回系统当前时间
如果Date()里面写参数,就返回括号里面输入的时间
参数能用的写法:
数字型:2019,10,01 或者是字符串类型’2019-10-01 8:8:8’这俩比较常用
toLocaleString() 方法可根据本地时间把 Date 对象转换为字符串,并返回结果。
输出格式:2022/4/17 16:15:17
23:0:2
,实现以上效果图的解决方法:进行判断,如果时、分、秒小于10,前面就补位0。采用方式:三目运算符
表达式?值1:值2;
h = h<10?’0’+h:h;
注意:不是当前时间的毫秒数,是1970年1月1号到现在过了多少毫秒数。
方法如下:
var date = new Date();
console.log( date.valueOf() );//方法一
console.log( date.getTime() );//方法二
其余写法:
var date1 = +new Date();
console.log(date1);
时间倒计时计算写法如下:
https://www.runoob.com/jsref/dom-obj-document.html
document.title 返回当前文档的标题。
document.URL 返回当前文档的URL
document.write() 页面文本写入
https://www.runoob.com/jsref/obj-history.html
(1)属性length :声明了浏览器历史列表中的元素数量。
(2)history对象方法
console.dir() 可以打印我们获取的元素对象,更好的查看对象里面的属性和方法
用法: document.getElementById(‘id’);
用法:document.getElementsByTagName(‘标签名’);
注意: querySelector 和 querySelectorAll里面的选择器需要加符号
比如:document.querySelector(‘#nav’);
(1)innerHTML:设置或获取对象及其内容的HTML形式。(解析标签)
(2)innerText:设置或获取对象的纯文本形式。(不解析标签)
(3)value:表单控件中value属性所呈现内容由该属性控制。
innerText
、innerHTML
改变元素内容src
、超链接href
type、value、checked、selected、disabled
例如:element.style.color= ‘#ff0000’
例如:element.className = ‘newName’
注意:
网页中的所有内容都是节点(标签、属性、文本、注释等),在DOM 中,节点使用 node 来表示。
HTML DOM 树中的所有节点均可通过 JavaScript 进行访问,所有 HTML 元素(节点)均可被修改,也可以
创建或删除。
【节点操作主要操作的是元素节点】
parentNode.children[0]
parentNode.children[parentNode.children.length - 1]
document.createElement(‘tagName’)
参考手册:
https://www.w3school.com.cn/jquery/jquery_intro.asp
https://jquery.cuishifeng.cn/hide.html
http://hemin.cn/jq/bind.html
jQuery具有轻量级、强大的选择器、出色的DOM操作的封装、可靠的事件处理机制、完善的Ajax、出色的浏览器兼容性、链式操作方式、隐士迭代、行为层与结构层的分离、丰富的插件支持、完善的文档、开源。
$(this).index(); //1
,不传递参数,返回这个元素在同辈中的索引位置。$('li').index($this);
(1)第一个参数是事件类型,常用的click,blur,hover等;第二个参数是可选参数,作为event.data属性值传递给事件对象的额外数据对象;第三个参数是用来绑定的处理函数
(2)多个事件类型可以通过将每个空格分隔开来一次绑定
(3)我们可以通过传递事件类型/处理程序对的对象来同时绑定多个事件处理程序
$( "#foo" ).bind( "click", function() {
alert( "User clicked on 'foo.'" );
});
$( "#foo" ).bind( "mouseenter mouseleave", function() {
$( this ).toggleClass( "entered" );
});
$( "#foo" ).bind({
click: function() {
// Do something on click
},
mouseenter: function() {
// Do something on mouseenter
}
});
用法:.unbind(type,fn)
$(this).css('color', 'red');
$('#txt').css({
"background": "black",
"color": "#fff"
})
可以操作类样式, 注意操作类里面的参数不要加点。(课本225页)
$(“div”).addClass(''current'');
$(“div”).removeClass(''current'');
$(“div”).toggleClass(''current'');
无参数,表示让指定的元素直接显示出来。其实这个方法的底层就是通过display属性实现的。
show(2000);有参数,通过控制元素的宽高、透明度、display属性,逐渐显示,2秒后显示完毕。
https://jquery.cuishifeng.cn/show.html
跟show()反之
开关式的显示隐藏动画
下拉动画,显示
上拉动画,隐藏
开关式切换
让元素以淡淡的进入视线的方式展示出来
让元素以渐渐消失的方式隐藏起来
通过改变透明度,切换匹配元素的显示或隐藏状态
将被选元素的不透明度逐渐地改变为指定的值
语法: $(selector).animate({params}, speed, callback);
第一个参数表示:要执行动画的css属性(必选)
第二个参数表示:执行动画时长(可选)
第三个参数表示:动画执行完后,立即执行的回调函数(可选)
语法:$(selector).stop(true, false); 默认是(false,false)
记得:玩动画 要先停止动画 再开启动画
返回或设置被选元素的内容 (inner HTML),对文本和标签进行渲染
如果有参数表示设置值,如果没有参数表示获取值,下面方法一样效果
方法设置或返回被选元素的文本内容。innerText实现,只对文本进行渲染
方法返回或设置被选元素的值(适合表单)
jQuery 遍历 - is() 方法 (w3school.com.cn)
作用:is() 根据选择器、元素或 jQuery 对象来检测匹配元素集合,如果这些元素中至少有一个元素匹配给定的参数,则返回 true。
通俗理解:判断里面的条件,满足返回true,不满足返回false。
例如:is(‘:visible’)判断是否是可见的,如果可见返回true,否则返回false。
jQuery prop() 方法 | 菜鸟教程 (runoob.com)
该方法设置或返回被选元素的属性和值。【但凡是自带的属性均可用这个获取,倾向于处理系统自带的。】
返回属性的值:
$(selector).prop('参数1 ')
设置属性和值:
$(selector).prop(‘参数1’,‘参数2’)
作用:该方法设置或返回被选元素的属性和值。
返回属性的值:
$(selector).attr(attribute);
设置属性和值:
$(selector).attr(attribute,value);
https://www.w3cschool.cn/article/56197750.html
$('div').css('font-size')
原有基础增加2px
$('div').css('font-size','+=2')
作用:从匹配的元素集合中移除指定的元素。
$('li').not(this)
var $li = $('<li>你好li>');
var $div = $('<div>你好div>');
父.append(子)
子.appendTo(父)
####(2)内部插入,前面
父.prepend(子)
子.prependTo(‘’)
####(3)外部插入,后面
兄弟.after(要插入的兄弟)
要插入的兄弟.inserAfter(兄弟)
####(4)外部插入,前面
before()
inserBefore()
https://www.w3school.com.cn/jquery/traversing_each.asp
https://www.w3school.com.cn/jquery/ajax_ajax.asp
<script>
$.ajax({
url: "https://api.eduapi.cn/api/test/books/index",//这里放的是接口地址,这个地址能用。
success: function(res) {
console.log(res);//获取成功之后返回的数据,我们之后对res里面的数据进行处理
}
});
script>