Web资源分类
静态资源:html、css、js、txt、mp4、jpg
动态资源:jsp、servlet
关系运算
等于 == 简单做字面比较
全等于 === 类型和数值都要等
逻辑运算
且: &&
或: ||
取反: !
**且: &&(短路记忆法)
当表达式全为真的时候,返回最后一个表达式的值
当表达式中,有一个为假的时候,返回第一个为假的表达式的值
**
var b =12;
var c= undefined
if (b&& c){
alert("零为真")
}else {
alert("零为假")
}
或 ||
当表达式全为真的时候 返回第一个表达式的值
当表达式有一个为假的时候,返回第一个为真的表达式的值
数组(像集合 自动变更长度)
var arr=[10];
arr[0]=1;
arr[12]=2;
alert(arr.length)
任何没被赋值的变量输出都是undifine
Function定义函数
使用格式如下
Function 函数名(形参列表){
function f() {
alert("无参函数被调用了")
}
f() //要被调用
带参函数
var a =10;
var b=undefined;
function f(a,b) {
alert(a);
alert(b);
}
f(a,b)
有返回值的函数,直接写return
var a =10;
var b=undefined;
function f(a,b) {
return a+b;
}
alert(f(a,b));
函数的第二种定义
var a =10;
var b=20;
var f =function (a,b) {
return a+b;
};
alert(f(a,b))
注意JS不能重载,会覆盖之前的定义
函数的arguments 隐形参数(只在function函数内)
在funciton函数中不需要定义,但却可以用来获取所有参数的变量。管他叫隐形参数。
像java的可变形参一样 像java数组一样有length长度
<script>
var a=1;
var b=1;
var c=1;
var d=1;
var e=1;
var f =function () {
alert(arguments.length);
return a+b+c+d+d+e;
};
alert(f(a,b,c,d,e))
</script>
计算输入的参数值用arguments循环,可以计算不确定输入个数的总和
var x =0;
var a=1;
var b=1;
var c=1;
var d=1;
var e=1;
var f =function () {
for (let i = 0; i <arguments.length ; i++) {
x=x+arguments[i];
}
alert(x)
};
f(a,b,c,d,e,);
JS中的自定义对象
可以直接对里面属性赋值,也可以直接输出
var x =new Object();
x.name="deng";
x.age = 18;
x.fun = function () {
alert(x.age);
alert(x.name);
};
x.fun();
成员变量和全局变量
成员变量:在浏览器打开的时候分配内存空间,关闭的时候销毁
局部变量:在函数体当中声明的变量,调用函数的时候分配空间,执行结束后,内存释放。
var s =123;
function f() {
var s = 456;
var a =1;
alert(s)
}
f();
alert(s);
alert(a);//内存已释放,没有值
当一个变量声明的时候没有写var时候默认是成员变量。
<script>
function f() {
s = 456;
alert(s)
}
f();
alert(s);
</script>
**Js方法不能重载,重写
默认会调用最近方法,同名函数之后的会覆盖之前的。
**
JS的数据类型string int 布尔Object null undefined
引用数据类型:Object function
基本数据类型 Sring int 布尔 null undefined
放到typeof中 时以下6个字符串之一(undefined,number,string,object,function)
Null =Object
检查输入的值是否是number
var d = function (a,b) {
if (typeof a !== "number" && typeof b !== "number"){
alert("输入的值有误")
}else {
alert(a+b)
}
};
Undifined
一个变量在声明的时候没有进行赋值就是undefined类型
Null
- 也是属于原始类型
- Typeof null运行结果时Object
Number类型(小数,正数,NaN,Infinity)
- Number类属于原始类型
- Number类型都有哪些值
1.小数
2.正数都是
3.NaN(当计算结果应该是一个数字,但没有返回一个数字时就是NaN)
4.Infinity
这里解释以下NaN():当输入的必须是数字时,却没有输出数字
function f() {
var a = 10;
var b ="ss";
var c = a*b;//这个c是一个NaN
alert(typeof c);
}
f()
Infinity解释
function f() {
var a = Infinity;
alert(typeof a);
}
f()
5.在Number类型中有一个函数叫 isNaN()函数 true表示是一个数字,false表示不是一个数字。
function f() {
var a = Infinity;
alert(isNaN(a));
}
f()
6.在Number类型中有一个函数娇Number()将一个非数字类型转为数字类型
var i ="10";
var z ="2";
// var sum = Number(i)+Number(z);
// var sum = i+z;
alert(sum);
7.String转number(JAVA)
function f() {
var a =“keivn啊啊啊”//这个不能转
var i ="keivn";
var z = parseInt(i);
alert(typeof z)
}
8.四舍五入(数学类)
function f() {
var i =123.9;
var s = Math.ceil(i);
alert(s)
}
布尔类型
1.只有两个值true 和false
2.有个函数,作用是不是布尔类型转为布尔类型(转换规律,只要有东西就是true,未定义 空 NaN 都是false)
function f() {
var i = "true";
var s = Boolean(i);
console.log(s)
}
Javascript中的事件
1
function cle() {
document.getElementById("testa").onclick =function () {
alert("click1")
}
document.getElementById("testb").onclick =function () {
alert("click2")
}
}
2.
window.onclick =function () {
document.getElementById("test1").onclick =function () {
alert("click1")
}
document.getElementById("test2").onclick=function () {
alert("click2")
跳到json
1.json概述
数据交换两个方法
Xml体积大解析难度大(一般和钱有关系的严谨的系统都采用xml交换)
Json体积小,解析更容易 (java-c++、javascript-java)
相比来说xml语法严格,json语法松散
在javscript中json是一个对象。
3. javascript怎么创建json对象,怎么访问json
注意[]中括号是数值,{}大括号是json
//格式
var jsonObj={
"属性名":属性值,
"属性名":属性值,
"属性名":属性值,
"属性名":属性值,
"属性名":属性值,
...
};
//访问对象属性
console.log(jsonObj.属性名)
console.log(jsonObj["属性名"])
例子
var st = [20];
st[20] = 12;
alert(st.length);
var person= {
"name":"kobe",
"age":43,
"position":["movie","basketball","father"]
};
console.log(person.name);
console.log(person.age);
for (let i = 0; i <person.position.length ; i++) {
console.log(person.position[i])
}
设计一个json格式的数据可以表示全班人数和每个学生信息
var class1= {
"Total":3,
"det":[{"name":"kevin","age":23},{"name":"k","age":23},{"name":"ke","age":23}]
};
console.log(class1.Total);
var s = class1.det;
for (let i = 0; i <s.length ; i++) {
console.log(s[i].name+","+s[i].age)
}
Json用于交换数据
Java将 数据拼接成Json格式的string字符串,给json,json转换成对象。
Window.eval(“将字符串当js执行”)
如:获取java来的json格式的字符串。
var jsonfromjava ="{\"name\":\"kevin\",\"age\":23}";
window.eval("var stu ="+ jsonfromjava);
console.log(stu.name)
浏览器向服务器发送请求的方法
- 直接在浏览器地址栏写URL,get请求
- 点击页面超链接,get请求。
- 提交form表单,可以是get,也可以是post
- Window.open(url);
- Document.location.href=rul;
例子
!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var jsonfromjava = "{\"ID\":1,\"Name\":\"Kabul\",\"CountryCode\":\"AFG\",\"District\":\"Kabol\",\"Population\":1780000}";
window.onload =function () {
document.getElementById("display").onclick =function () {
//解析json来的字符串获取记录数
window.eval("data = "+jsonfromjava);
document.getElementById("total_span").innerHTML = data.ID;
document.getElementById("num").innerHTML = data.ID;
document.getElementById("nam").innerHTML = data.Name;
document.getElementById("cityco").innerHTML = data.CountryCode;
document.getElementById("pla").innerHTML = data.District;
document.getElementById("popu").innerHTML = data.Population;
}
};
</script>
</head>
<body>
<!-- <form method="get" action="http://localhost:8080/jsontet_war_exploded/welcome">-->
<form>
<input type="button" value="查找数据" id="display">
<table border="1px" width="40%">
<tr>
<th>编号</th>
<th>姓名</th>
<th>城市代码</th>
<th>地区</th>
<th>人口</th>
</tr>
<tbody>
<tr>
<td id="num"></td>
<td id="nam"></td>
<td id="cityco"></td>
<td id="pla"></td>
<td id="popu"></td>
</tr>
</tbody>
</table>
总记录:<span id="total_span">条</span>
</form>
</body>
</html>
正则表达式
常用的正则表达式符号
. 匹配除换行符意外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配打你的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
*重复零次或更多次
- 重复一次或更多次
?重复零次或一次
{n} 重复N次
{n,} 重复n次或更多次
{n,m} 重复n到m次
取反
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D
\B
[^X]匹配除X开始以外的字符
[^aeiou]匹配除了aeiou意外的字符
|表示或者
js中怎么创建正则表达式对象
var regExp = /正则表达式/标记
标记是可选项!!!!!!
- g:全局匹配
- i:忽略大小写 ignorecase
js中对象有一个很重要的方法:匹配输入的数是否为true(test)
var emailRegExp = [1-9][0-9]/{4:10};
var ok = emailRegExp.test("用户输入字符串");
正则表达式检验邮箱
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
var s =function () {
var emailRegExp = /^\w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/;
var a = document.getElementById("email").value;
var ok = emailRegExp.test(a);
if(ok){
alert("输入的地址合法")
}else {
alert("输入的地址不合法")
}
}
</script>
</head>
<body>
<form>
输入邮箱地址:</label><input type="text" id="email">
<br>
<input type="button" value="验证邮箱地址" onclick="s()" id="checkemail">
</form>
</body>
</html>
正则表达式判断输入账号并提示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function f() {
var user = document.getElementById("username").value;
var emailRegExp= /^\w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/;
uservalue = user.trim();
var ok = emailRegExp.test(uservalue);
if (ok){
document.getElementById("errorusername").innerHTML = "";
}else {
document.getElementById("errorusername").innerHTML = "输入的账号有误";
}
}
</script>
</head>
<body>
<form>
账号:<input type="text" name="account" id="username" onblur="f()"><span id="errorusername"></span><br>
密码:<input type="password" name="passowrd" id="password"><span></span><br>
确认密码:<input type="text" name="confirmpassword" id="confirmpassowrd"><span></span><br>
</form>
</body>
</html>
写法二
<script type="text/javascript">
window.onblur =function () {
document.getElementById("username").onblur =function () {
alert("失去焦点")
}
}
</script>
</head>
<body>
<form>
账号:<input type="text" name="account" id="username"><span id="errorusername"></span><br>
密码:<input type="password" name="passowrd" id="password"><span></span><br>
确认密码:<input type="text" name="confirmpassword" id="confirmpassowrd"><span></span><br>
表单验证
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
window.onblur =function () {
document.getElementById("confirmpassword").onblur = function(){
var con =document.getElementById("confirmpassword").value;
var co =con.trim();
var pas = document.getElementById("password").value;
if(co == pas){
document.getElementById("conspan").innerHTML = "";
}else {
document.getElementById("conspan").innerHTML ="两次输入的密码不一致"
}
};
document.getElementById("password").onblur = function(){
var pas =document.getElementById("password").value;
var pa =pas.trim();
var emailRegExp=/^.{3,20}$/;
var ok = emailRegExp.test(pa);
if (pa == ""){
document.getElementById("passspan").innerHTML = "密码不能为空"
}else {
if (ok){
document.getElementById("passspan").innerHTML =""
}else {
document.getElementById("passspan").innerHTML ="密码不可用"
}
}
};
document.getElementById("account").onblur =function () {
// alert("失去焦点")
var acc= document.getElementById("account").value;
var ac = acc.trim();
var emailRegExp=/^.{3,20}$/;
var ok = emailRegExp.test(ac);
if (ac == ""){
document.getElementById("accspan").innerHTML = "不能为空"
}else {
if (ok){
document.getElementById("accspan").innerHTML = ""
}else {
document.getElementById("accspan").innerHTML = "请输入正确的账户";
}
}
}
};
window.onfocus =function () {
document.getElementById("account").onfocus =function () {
document.getElementById("accspan").innerHTML ="";
};
document.getElementById("password").onfocus =function () {
document.getElementById("passspan").innerHTML ="";
};
document.getElementById("confirmpassword").onfocus =function () {
document.getElementById("conspan").innerHTML ="";
}
};
//触发焦点事件
window.onclick =function () {
document.getElementById("sub").onclick =function () {
document.getElementById("password").focus();//这里我做错了不是onfocus 是focus 调用事件
document.getElementById("account").blur();
document.getElementById("account").focus();
document.getElementById("password").blur();
document.getElementById("confirmpassword").focus();
document.getElementById("confirmpassword").blur();
if(document.getElementById("accspan").innerHTML == "" && document.getElementById("passspan").innerHTML == "" && document.getElementById("conspan").innerHTML == ""){
var s = document.getElementById("su");
s.submit();
}
}
}
</script>
</head>
<body>
<form action="http://localhost:8080/" id="su">
账户:<input type="text" id="account"><span id="accspan"></span><br>
密码:<input type="password" id="password"><span id = passspan></span><br>
确认密码:<input type="password" id="confirmpassword"><span id="conspan"></span><br>
<input type="button" id="sub" value="提交">
</form>
</body>
</html>
jQuery
什么是jQuery
是javascript的库,封装的大量方法。
官网地址https://jquery/com/
几乎所有浏览器支持
标版:写的更少做的更多
jQuery支持跨浏览器适配不用做多条ifelse
jQuery做动态绑定事件
jQuery基础
- 下载
第一个是压缩版,主要用于部署,占用资源空间小,部署带框占用小,因为去掉了多余的换行符和空格,但是可读性差。
第二个是非压缩版,保留原格式,可读性好,但比压缩版占用资源多大。
- 简单的使用
定义dom对象
$(“#id”)
$(“.class名字”)
( “ ” 标 签 名 ” ” ) 第 一 个 简 单 的 (“”标签名””) 第一个简单的 (“”标签名””)第一个简单的函数
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HellojQuery</title>
<script type="text/javascript" src="./js/jquery-3.6.0.js"></script>
<script>
$(document).ready(function(){
alert("HellojQuery")
})
</script>
</head>
<body>
<form id="for">
账号:<input type="text" id="acc">
密码:<input type="password" id="pass">
性别:
男<input type="checkbox" value="man">
女<input type="checkbox" value="wuman">
特长:
<select>
<option value="java">java</option>
<option value="python">python</option>
<option value="Go">Go</option>
</select>
<input type="button" value="提交" id="sub" onclick="$()">
</form>
</body>
</html>