3.3.1 JavaScript
3.3.1.1 JavaScript概述
JavaScript与Java的关系可谓是,雷锋与雷峰塔——毫无关系。
JavaScript 是 Web 的编程语言,JavaScript是一种面向对象思想的脚本语言,通过JavaScript可以实现用户与静态网页之间的交互,也称为动态网页技术(JavaScript+HTML+CSS)。
- HTML 定义了网页的内容
- CSS 描述了网页的布局
- JavaScript 控制了网页的行为
本系列重点为后端,所以前端内容可参考专业的网站进行学习,本节只涉及局部知识:
JavaScript 对象 | 菜鸟教程
3.3.1.2 JavaScript用法
HTML 中的 Javascript 脚本代码必须位于 <script> 与 </script> 标签之间。
Javascript 脚本代码可被放置在 HTML 页面的 <body> 和 <head> 部分中。
3.3.2 基础语法
3.3.2.1 JavaScript 输出
- 使用 window.alert() 弹出警告框。
- 使用 document.write() 方法将内容写到 HTML 文档中。
- 使用 innerHTML 写入到 HTML 元素。
- 使用 console.log() 写入到浏览器的控制台。
3.3.2.2 JavaScript 运算符、控制语句、语法
虽然JavaScript与Java没有血缘关系,但是在语法、命名等规则方面和Java几乎一样,只要按 Java的规则来就不会出错。
运算符、控制语句等和其他的编程语言都接近。
3.3.2.2.1 增强for循环
<script>
var arr=['a','b','c'];
//let 用于声明局部变量
//for in 声明变量 存储取出数据的索引
for(let i in arr){
console.log(i+":"+arr[i]);
}
3.3.2.3 JavaScript 数据类型
JavaScript 弱类型语言,定义的时候只需要关键词var、let、const 。
var:函数作用域,整个函数内都是有效的。在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
lte:块作用域,比如在for循环内,在其外面是不可被访问的。
let必须先声明,再使用,而var可先使用后声明。
3.3.3 API
3.3.3.1 Math
abs()求绝对值ceil()向上取整floor()向下取整random()随机数 0~1
3.3.3.2 Date
getFullYear()获取年份getMonth()获取月份getDate()获取天getHours()获取小时getMinutes()获取分钟getSeconds()获取秒getMilliseconds()
//Date对象
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var seconds = date.getSeconds();
var millSeconds = date.getMilliseconds();
//拼接日期
console.log(date);
var dateTime = year + "年" + month + "月" + day + "号 " + hour + ":" + minute + ":" + seconds;
console.log(dateTime);
3.3.3.3 Array数组
js中的数组类似于java中的ArrayLis他,因为js没有指定的数据类型 所以存入数据可以看做是object 可以存储任意类型数据。
数组的声明
数组本质是个对象 所以直接使用var声明
var 数组名
数组的创建
与java不同, js数组创建的长度可以自动增长
无参构造方法创建
数组名=new Array(); var arr1 = new Array();
数组名=new Array(length);
创建指定长度的数组 值为empty 注意不是null var arr2 = new Array(5);
数组名=[数据,数据,数据....];
var arr3 = [1, 2, "a", true];
数组的赋值
通过索引对数组对应位置进行赋值
需要注意的是 指定索引不存在也可以赋值 前面的数据会用empty设置
3.3.3.4 String字符串
new String("x")构造方法
charAt(x)
取字符串对象指定索引数据
indexOf("x")
第一次出现的索引
lastIndexOf("x")
最后一次出现的索引
substring(x, x)
截取字符串从指定索引开始 到指定索引结束
substr(x, x)
截取字符串从指定索引开始 指定长度
split("x")
分割字符串 按照指定字符x分割为字符串数组
3.3.4 函数
函数:包裹在{}中的代码块,前面使用了关键词 function:
function functionname()
{
// 执行代码
}
有参
js中所有类型使用var 所以声明方法时只需要定义接收数据的变量名即可
function functionname(a,b)
{
// 执行代码
return c;
}
JavaScript 对大小写敏感。关键词 function 必须是小写。
3.3.5 BOM对象
浏览器对象,当前页面浏览器解析后会自动创建代表对应功能的对象,主要包括:
- window对象:HTML解析后的页面
- location:页面地址栏
- history:跳转的历史记录
- screen对象:浏览器屏幕
3.3.5.1 window
定时器(延时执行)与计时器的功能(延时重复执行)
3.3.5.2 location
- window.location.href: 返回当前页面的 href (URL)
- window.location.hostname :返回 web 主机的域名
- window.location.pathname :返回当前页面的路径或文件名
- window.location.protocol :返回使用的 web 协议(http: 或 https:)
3.3.5.3 history
- back():后退方法
- forword():前进方法
- go(number):根据number进行前进后退
javascript:histtory.go(-1);的形式进行返回
3.3.5.4 screen
screen.height
高度
screen.width
宽度
screen.availHeight
可用高度screen.availWidth可用宽度
3.3.6 DOM对象
3.3.6.1 获取标签
document.getElementById()根据id获取元素document.getElementsByClassName()根据class名获取元素document.getElementsByTagName()根据标签名获取元素document.getElementsName()根据name属性值获取元素
注意浏览器加载执行顺序 如果使用js获取标签,那么首先需要保证js执行时 页面已加载显示对应标签。
3.3.6.2 标签属性
标签对象.属性方式
value()
获取对应标签的value
id()
获取对应标签的id
name()
获取对应标签的name
innerHTML
获取当前标签内的内容 如果有其他标签按照原代码形式获取
innerText
仅获取当前标签中的所有的文本内容
JS获取修改属性书写步骤
1.通过document对象对应的方法获取对应的标签对象(如果返回多个从中取出)
2.通过属性获取标签上的内容与修改标签上的内容(如果是双标签中间的文本使用innerHTML或inneText属性获取)
//先获取对应的标签对象
var d1=document.getElementById("d1");
//获取当前标签内的内容 如果有其他标签按照原代码形式获取
console.log(d1.innerHTML);
//仅获取当前标签中的所有的文本内容
console.log(d1.innerText);
var i1= document.getElementById("i1");
//可以所有属性都可以通过对象.属性获取
console.log(i1.value);
console.log(i1.id);
console.log(i1.name);
i1.value="已经获取";
i1.id='新id';
i1.name='新name';
3.3.6.3 事件
3.3.6.3.1 什么是事件
事件:标签发生的特殊的状态,例如 点击键盘、按下抬起键盘、鼠标移入、鼠标移出、鼠标移动 、加载完毕。类似于css中选择器的伪元素的概念。
3.3.6.3.2 什么是事件绑定
事件绑定:将对应的事件与对应的标签绑定,当对应的标签发生相应绑定的事件时,会执行相应的代码,实现对应的功能。
事件对象:当相应事件发生时,会根据事件相应属性创建事件对象,在处理事件相应的方法中可以直接使用,获取事件信息在方法中使用event代表当前发生事件对象,其内保存了当前事件的所有信息。
3.3.6.3.3 两种事件绑定方式
方式一
function eventfunction(){
定义事件
}
///根据标签id获取标签,也可根据标签class或name获取对应标签
var d2= document.getElementById("d2"); /
//把d2标签的发生的事件绑定eventfunction函数 格式 : d2.事件=eventfunction;
d2.οnclick=eventfunction;//鼠标点击事件绑定eventfunction
方式二
3.3.6.3.4常见事件
事件名描述onclick单击事件onchange变化事件onsubmit表单提交事件onload页面加载事件
<script>
function eventfunction(){
// console.log("事件发生")
// console.log(event)
//事件对象常用属性
console.log("事件类型:"+event.type);
}
var d2= document.getElementById("d2");
//d2.onclick=eventfunction;//鼠标点击事件
//d2.onmousedown=eventfunction;//鼠标按下事件
//d2.onmouseup=eventfunction;//鼠标抬起事件
//d2.onmouseover=eventfunction;//鼠标移入事件
//d2.onmouseout=eventfunction;//鼠标移出事件
d2.onmousemove=eventfunction;//鼠标移动事件
</script>
3.3.6.4 节点操作
通过js创建对应的标签对象并放入页面显示,经常用于页面的动态生成(页面数据由后台获取)。
<body>
<button>添加</button> <button>删除</button>
<table border="1">
<thead>
<tr><th>id</th><th>name</th><th>age</th></tr>
</thead>
<tbody id="tb"></tbody>
</table>
</body>
<script>
//准备数据 相同写死
//1 zhangsan 18
//获取数据添加位置
var tb=document.getElementById("tb");
//为按钮添加相应的事件
document.getElementsByTagName("button")[0].onclick=function(){
//创建对应的标签对象
var tr=document.createElement("tr");
var td1=document.createElement("td");
var td2=document.createElement("td");
var td3=document.createElement("td");
//为对应的单元格赋值
td1.innerText=prompt("请输入id")
td2.innerText=prompt("请输入name")
td3.innerText=prompt("请输入age")
//将单元格存入行标签中
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
//将tr放入表格
tb.appendChild(tr);
}
document.getElementsByTagName("button")[1].onclick=function(){
// alert("删除")
//获取删除的标签
//删除最后一行
var trArr=document.getElementsByTagName("tr");
var index=prompt("请输入删除的行数")
var delTr=trArr[index];
//调用方法删除
tb.removeChild(delTr);
}
</script>
3.3.6.5 JSON
3.3.6.5.1 什么是JSON
JSON:JavaScript Object Notation(JS对象简谱)是一种轻量级的数据交换格式。
JSON属于前端对象,用于保存数据,是前后端数据交互的基石,在前端通过**.属性方式获取值,书写语法类似于java中的map集合,[key:value]形式 ,key必须为字符串,value为任意类型数据**。
3.3.6.5.2 JSON语法
格式
var 变量名**={"key1":value1,"key2":value2,"key3":value3}**
{}包裹数据
数据之间用","分割
key必须为字符串,所以用""
JSON的存值与取值
<script>
声明json对象保存学生信息
var json={'id':1,'name':'张三','age':18};
获取json对象对应key值的方式
方式一:将json对象当前一个类的对象,通过.key的形式获取
console.log(json.name)
方式二:通过类似于数组索引[key]的形式获取
console.log(json['name'])
</script>
方式一:只能固定调用某一个key对应的value。
方式二:可以指定key获取数据,更加灵活。
3.3.6.5.3 数组保存JSON
一个JSON对象只能保存一个对象数据,但是前后台交互可能返回多个对象的数据。将JSON保存到数组里返回给前台,就可以解决这个问题。
<script>
var arr=[{'id':1,'name':'张三','age':18},{'id':2,'name':'李四','age':28},{'id':3,'name':'王五','age':38}];
console.log(arr);
使用的顺序就是先从数组中取出对应的json数据 之后获取key对应属性
方式一
console.log(arr[1].age);
方式二
console.log(arr[1]["age"]);
</script>
3.3.6.5.4 JSON格式
前面介绍了JSON的格式以及使用方法,在实际的开发中,不同的系统会有不同的JSON格式,JSON里不仅有数据还有其他的提示信息。
var dataJson={
'code':200,
'msg':'信息',
'data':[{'id':1,'name':'张三','age':18},{'id':2,'name':'李四','age':28},{'id':3,'name':'王五','age':38}]
};
3.3.6.5.5 示例
后台处理JSON并返回给前台,在后面的Servlet会讲解。
前台接收JSON并动态生成表格
<script>
//准备json数据 模拟后台返回
var dataArr=[{'id':1,'name':'张三1','age':18},{'id':2,'name':'李四1','age':28},{'id':3,'name':'王五','age':38}];
//遍历集合
for(var i=0;i<dataArr.length;i++){
var json=dataArr[i];
//创建行对象
var tr=document.createElement("tr");
//创建列对象
var td1=document.createElement("td");
var td2=document.createElement("td");
var td3=document.createElement("td");
//为td赋值
td1.innerHTML=json.id;
td2.innerHTML=json.name;
td3.innerHTML=json.age;
//将td存入tr
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
//将tr存入tbody
document.getElementById("tb").appendChild(tr);
}
</script>
上一篇:下一篇:
版权归原作者 老李头喽 所有, 如有侵权,请联系我们删除。