一:Js介绍
二:js引入方式
(一):内部脚本<script>标签
(二):外部脚本
(三):示例
<script>可以放置在任意位置
三:基础语法
(一):书写语法
2.输出语句
// 方式一:弹出对话框
window.alert("hello JS");
// 方式二:写入HTML,在浏览器展示
document.write("hello JS");
// 方式三:写入浏览器控制台
console.log("hello JS");
(二)变量
注意:JS的变量可以存放不同类型的值
1.var变量特点
(1)全局变量,即使在代码块里被定义,也能在代码块外使用
(2)可以重复定义,会自动覆盖原来的值
2.let变量
(1)局部变量
(2)不允许重复声明(同JAVA)
3.const常量
一个只读常量,一旦声明,常量值不可更改
<script>
// 弱语言
/* var x=10
x="xixi"
alert(x) */
//var 变量的特点
/* {
var a=10
var a="haha"//重复声明
}
alert(a)//全局使用 */
//let变量
/* {
let a=10
//let a="haha"//不能重复声明
alert(a) //局部变量
} */
//const常量
const a="xixi"
//a="hha" //加上后也弹不出任何东西
alert(a)
script>
(三)数据类型&运算符
1.数据类型--5种数据类型
2.类型转换
其它类型转数字:
其它类型转boolean:
2.运算符
(1)==与=== 返回值为true和false
===会比较二者的数据类型是否一致
四:函数
1:定义一
2:定义二
<script>
//定义一
function add(a,b){
return a+b;
}
var result=add(1,2)
alert(result)
//定义二
var add =function add(a,b){
return a+b;
}
var result=add(1,2)
alert(result)
script>
五:对象
(一):Array数组
1.定义
2.特点:长度可变,类型可变
3.属性与常用方法
(1)foreach
箭头:简化函数定义
(2)push和splice
(二):String字符串
(三):JSON
1.JS自定义对象
2.JSON对象
前后端之间传输的对象数据是JSON对象数据,其是一个字符串
前端解析JSON数据,需要先将其转换为JS(自定义)对象,然后才可以通过JS对象的调用方法进行调用。
3.JSON对象的基本语法
举例:注意,name与addr这类键字符串要双引号包裹。而对于值数字,字符串等不同类型,包裹类型不同
<script>
var user='{"name":"Tom","age":"18","addr":["北京","上海"]}'
var jsobject=JSON.parse(user);
alert(jsobject.name)
</script>
(四):BOM(浏览器对象模型)
1.Window对象
(1)confirm
//confirm方法,弹出有确定与取消的对话框
// 确定,返回值为true,错误,返回值为false
var re=confirm("确定删除吗?")
document.write(re)
(2) 定时器
var i=0
//定时器 每2秒执行一次
setInterval(function(){
i++
document.write("定时器执行第"+i)
} ,2000)
(3)延时器
//延时器,延时3000毫秒
setTimeout(function(){
alert("延时执行")
},3000)
2.Location对象(地址栏对象)
属性:掌握获取地址栏
//Location
alert(location.href)//获取当前地址
location.href="https://link.springer.com/journal/10489"
alert(location.href)//获取当前地址,并在点击确认后跳转到上述新地址
(1)获取当前地址
(2)跳转网址----地址跳转
(五):DOM(文档对象模型)
1.DOM的作用
JS操作标记型语言的模型(HTML,XML都是标记语言)
(简单说:JS通过DOM操作标记语言文档(如html文件)的文本,图片,视频元素,操作包括删减增加,更改内容,变换颜色等。
如何操作:通过文本视频的标签实现 如:标题标签<h>,<img>,<a>,<div>(CSS标签也可)
或者通过标签的id实现(不想让所有的<h>标签都变换,给其加id,通过id实现)
)
先获取元素(文本,图片,视频),再通过元素的属性值进行操作
2.DOM树
举例:
3.DOM分类
4.DOM操作HTML内容的方法(id,class,标签,name)
(对应下面例子里的代码)
(1)获取元素(文本,图片,视频)
举例:
DOM操作
<body>
<img id="h1" src="off.gif"> <br><br>
<div class="cls">传智教育</div> <br>
<div class="cls">黑马程序员</div> <br>
<input type="checkbox" name="hobby"> 电影
<input type="checkbox" name="hobby"> 旅游
<input type="checkbox" name="hobby"> 游戏
</body>
<script>
// 1 获取元素
// 1.1 根据id获取
var img=document.getElementById('h1');
alert(img)
// 1.2 根据标签获取
var divs=document.getElementsByTagName('div')
for (let i = 0; i < divs.length; i++) {
alert(divs[i])
}
//根据name属性获取
var ins=document.getElementsByName('hobby')
for (let i = 0; i < divs.length; i++) {
alert(divs[i])
}
//根据class属性获取
var cll=document.getElementsByClassName('hobby')
for (let i = 0; i < divs.length; i++) {
alert(divs[i])
}
</script>
5.DOM练习
(注意查看报错在网页-检查-控制台(看右上角的红色))
<script>
// 1.1 点亮灯泡 改变src属性值
var img=document.getElementById('h1');
img.src="on.gif"
// 1.2 所有div标签的内容后面加上very good
// 红色字体
var divs=document.getElementsByTagName('div')
for (let i = 0; i < divs.length; i++) {
var div =divs[i]
div.innerHTML+= "<font color='red';>very good</font>"
}
//1.3 使所有复选框呈选择状态
var ins=document.getElementsByName('hobby')
for (let i = 0; i < ins.length; i++) {
var check =ins[i]
check.checked=true //选中
}
</script>
(六)JS事件监听
1.简介
类似JAVA里的键盘监听
对网页上的内容进行点击,按键盘等内容进行捕捉,然后做出相应反应
2.事件绑定
对需要监听的元素绑定,动作行为(事件)
如:点击到了,绑定动作行为“我被点击到了”
<body>
<input type="button" id="btn1" onclick="on()" value="事件绑定1">
<input type="button" id="btn2" value="事件绑定2">
</body>
<script>
//方式一:通过HTML标签属性绑定
function on(){
alert('我被点击到了')
}
//方式二:通过DOM获取元素,再调用属性进行绑定
document.getElementById('btn2').onclick=function on(){
alert('我被点击到了')
}
</script>
3.常见事件
获得/失去焦点事件
获得就是在点入输入框时,有闪动
失去就是点其它地方,这个闪动会消失
<script>
//onload : 页面/元素加载完成后触发
function load(){
console.log("页面加载完成...")
}
//onclick: 鼠标点击事件
function fn1(){
console.log("我被点击了...");
}
//onblur: 失去焦点事件
function bfn(){
console.log("失去焦点...");
}
//onfocus: 元素获得焦点
function ffn(){
console.log("获得焦点...");
}
//onkeydown: 某个键盘的键被按下
function kfn(){
console.log("键盘被按下了...");
}
//onmouseover: 鼠标移动到元素之上
function over(){
console.log("鼠标移入了...")
}
//onmouseout: 鼠标移出某元素
function out(){
console.log("鼠标移出了...")
}
//onsubmit: 提交表单事件
function subfn(){
alert("表单被提交了...");
}
</script>
<body onload="load()">
<form action="" style="text-align: center;" onsubmit="subfn()">
<input type="text" name="username" onblur="bfn()" onfocus="ffn()" onkeydown="kfn()">
<input id="b1" type="submit" value="提交">
<input id="b1" type="button" value="单击事件" onclick="fn1()">
</form>
<br><br><br>
<table width="800px" border="1" cellspacing="0" align="center" onmouseover="over()" onmouseout="out()">
<tr>
<th>学号</th>
<th>姓名</th>
<th>分数</th>
<th>评语</th>
</tr>
<tr align="center">
<td>001</td>
<td>张三</td>
<td>90</td>
<td>很优秀</td>
</tr>
<tr align="center">
<td>002</td>
<td>李四</td>
<td>92</td>
<td>优秀</td>
</tr>
</table>
</body>
4.案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>事件监听案例</title>
</head>
<body>
<img id="light" src="off.gif"><br>
<input type="button" value="点亮" onclick="light()">
<input type="button" value="熄灭" onclick="off()"><br>
<input type="text" id ="name" value="ITCAST" onfocus="lower()" onblur="upper()"><br>
<input type="checkbox" name="hobby">电影
<input type="checkbox" name="hobby">旅游
<input type="checkbox" name="hobby">游戏<br>
<input type="button" value="全选" onclick="checkall()">
<input type="button" value="反选" onclick="verse()">
</body>
<script>
//1. 点击 "点亮" 按钮, 点亮灯泡; 点击 "熄灭" 按钮, 熄灭灯泡;
//点亮灯泡,熄灭灯泡
function light(){
var img =document.getElementById("light")
img.src="on.gif";
}
function off(){
var img =document.getElementById("light");
img.src="off.gif";
}
//2. 输入框聚焦后, 展示小写; 输入框离焦后, 展示大写;
function lower(){
var input=document.getElementById("name")
input.value=input.value.toLowerCase()
}
function upper(){
var input=document.getElementById("name")
input.value=input.value.toUpperCase()
}
//3. 点击 "全选" 按钮使所有的复选框呈现选中状态 ;
//点击 "反选" 按钮使所有的复选框呈现取消勾选的状态 ;
// -- onclick
// 使用表单的name属性获取
function checkall(){
var bot=document.getElementsByName("hobby")
for (let i = 0; i < bot.length; i++) {
const element = bot[i]
element.checked=true
}
}
function verse(){
var bot=document.getElementsByName("hobby")
for (let i = 0; i < bot.length; i++) {
const element = bot[i]
element.checked=false
}
}
</script>
</html>
六:Vue
(一)Vue概述
<script src="vue.js"></script>
<body>
<div id="app">
<input type="text" v-model="message">{{message}}
<!-- 文本框后面直接跟一段文本 -->
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
message:"hello word"
}
})//里面是一个对象,用花括号
</script>
(二)Vue指令
1.v-bind&v-model
<body>
<div id="app">
<a v-bind:href="url">Applied Intelligence</a>
<a :href="url">Applied Intelligence</a>
<input type="text" v-model="url">
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
url:"https://link.springer.com/journal/10489"
}
})//里面是一个对象,用花括号
</script>
2.v-on--绑定事件
<body>
<div id="app">
<!-- <a v-bind:href="url">Applied Intelligence</a>
<a :href="url">Applied Intelligence</a>
<input type="text" v-model="url"> -->
<input type="button" value="点我一下" v-on:click="clic()">
<!-- 简写 -->
<input type="button" value="点我一下" @click="clic()">
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
},
methods: {
clic:function(){
document.write("我被你点击到了")
}
},
})
/* new Vue({
el:"#app",
data:{
url:"https://link.springer.com/journal/10489"
}
})//里面是一个对象,用花括号 */
</script>
3.v-if & v-show
代码:
<div id="app">
年龄<input type="text" v-model="age">经判定为:
<span v-if="age<=35">年轻人(35以下)</span>
<span v-else-if="age<=55 && age>35">中年人(35-55)</span>
<span v-else="age>=55">老年人(55以上)</span>
<br>
年龄<input type="text" v-model="age">经判定为:
<span v-show="age<=35">年轻人(35以下)</span>
<span v-show="age<=55 && age>35">中年人(35-55)</span>
<span v-show="age>=55">老年人(55以上)</span>
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
age:20
}
})//里面是一个对象,用花括号
</script>
4.v-for
<body>
<!-- 标签唯一 -->
<div id="app">
<div v-for="addr in addres">{{addr}}</div>
<hr>
<div v-for="(addr,index) in addres">{{index+1}}:{{addr}}</div>
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
addres:['北京','上海','广州']
}
})//里面是一个对象,用花括号
</script>
(三)Vue案例
<body>
<div id="app">
<table border="1" cellspacing="0" width="60%">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>成绩</th>
<th>等级</th>
</tr>
<tr align="center" v-for="(user,index) in users">
<td>{{index+1}}</td>
<td>{{user.name}}</td>
<td>{{user.age}}</td>
<td>
<span v-if="user.gender==1">男</span>
<span v-else="user.gender==2">女</span>
</td>
<td>{{user.score}}</td>
<td>
<span v-if="user.score>= 85">优秀</span>
<span v-else-if="user.score>= 65">及格</span>
<span v-else="user.score<65" style="color: red;">不及格</span>
</td>
</tr>
</table>
</div>
</body>
<script>
new Vue({
el: "#app",
data: {
users: [{
name: "Tom",
age: 20,
gender: 1,
score: 78
},{
name: "Rose",
age: 18,
gender: 2,
score: 86
},{
name: "Jerry",
age: 26,
gender: 1,
score: 90
},{
name: "Tony",
age: 30,
gender: 1,
score: 52
}]
},
methods: {
},
})
</script>
(四)Vue周期
从创建到销毁的8个阶段