• JavaScript的使用


    一、JavaScript 介绍

    Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。 

    JS是 Netscape网景公司的产品,最早取名为 LiveScript;为了吸引更多 java程序员。更名为 JavaScript。

    JS是弱类型,Java是强类型。

    特点:
    1. 交互性(它可以做的就是信息的动态交互)
    2. 安全性(不允许直接访问本地硬盘)
    3. 跨平台性(只要是可以解释  JS的浏览器都可以执行,和平台无关)

    二、JavaScript 使用

    1、JavaScript 和 html 代码的结合方式

    1)第一种方式

    只需要在head标签中,或者在body标签中,使用script 标签来书写 JavaScript 代码

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. alert("hello javaScript!");
    8. script>
    9. head>
    10. <body>
    11. body>
    12. html>

    2)第二种方式

    使用script标签引入单独的 JavaScript 代码文件

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript" src="1.js">script>
    7. head>
    8. <body>
    9. body>
    10. html>

    2、变量

    JavaScript  的变量类型: 

    • 数值类型: number 
    • 字符串类型: string 
    • 对象类型: object 
    • 布尔类型: boolean 
    • 函数类型:function

    JavaScript  里特殊的值: 

    • undefined:未定义,所有 js变量未赋于初始值的时候,默认值都是 undefined. 
    • null :空值
    • NaN:全称是:Not a Number。非数字。非数值。

    JS 中的定义变量格式: 

    • var   变量名;
    • var   变量名   =   值; 
    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. var i;
    8. // alert(i); // undefined
    9. i = 12;
    10. // typeof()是 JavaScript语言提供的一个函数。
    11. // alert( typeof(i) ); // number
    12. i = "abc";
    13. // 它可以取变量的数据类型返回
    14. // alert( typeof(i) ); // String
    15. var a = 12;
    16. var b = "abc";
    17. alert( a * b ); // NaN是非数字,非数值。
    18. script>
    19. head>
    20. <body>
    21. body>
    22. html>

    3、关系(比较)运算

    等于: ==    等于是简单的做字面值的比较

    全等于: ===    除了做字面值的比较之外,还会比较两个变量的数据类型         

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. var a = "12";
    8. var b = 12;
    9. alert( a == b ); // true
    10. alert( a === b ); // false
    11. script>
    12. head>
    13. <body>
    14. body>
    15. html>

    4、逻辑运算

    • 且运算: && 
    • 或运算: || 
    • 取反运算: !

    在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。

    0、null、undefined、””(空串)    都认为是false;

    && 且运算:

    1. 当表达式全为真的时候。返回最后一个表达式的值。
    2. 当表达式中,有一个为假的时候。返回第一个为假的表达式的值 

    || 或运算:

    1. 当表达式全为假时,返回最后一个表达式的值
    2. 只要有一个表达式为真。就会把回第一个为真的表达式的值 

    并且 && 与运算和 || 或运算有短路,当这个 && 或 || 运算有结果了之后,后面的表达式不再执行。

    5、数组

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. var arr1 = []; // 定义一个空数组
    8. alert( arr.length ); // 0
    9. arr[0] = 12;
    10. alert( arr[0] );//12
    11. // javaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作。
    12. arr[5] = "abc";
    13. alert(arr.length); //6
    14. alert(arr[4]);// undefined
    15. // 数组的遍历
    16. for (var i = 0; i < arr.length; i++){
    17. alert(arr[i]);
    18. }
    19. script>
    20. head>

    6、函数

    1)函数的二种定义方式

    方式一

    使用的格式如下:

    1. function 函数名(形参列表){ 
    2. 函数体
    3. }
    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. // 定义一个无参函数
    8. function fun(){
    9. alert("无参函数 fun()被调用了");
    10. }
    11. fun();
    12. function fun2(a ,b) {
    13. alert("有参函数 =>" + a + ",b=>"+b);
    14. }
    15. fun2(12,"abc");
    16. // 定义带有返回值的函数
    17. function sum(num1,num2) {
    18. var result = num1 + num2;
    19. return result;
    20. }
    21. alert( sum(100,50) );
    22. script>
    23. head>
    24. <body>
    25. body>
    26. html>

    方式二

    使用格式如下:

    var 函数名 = function(形参列表){ 函数体 }
    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. var fun = function () {
    8. alert("无参函数");
    9. }
    10. fun();
    11. var fun2 = function (a,b) {
    12. alert("有参函数 a=" + a + ",b=" + b);
    13. }
    14. fun2(1,2);
    15. var fun3 = function (num1,num2) {
    16. return num1 + num2;
    17. }
    18. alert( fun3(100,200) );
    19. script>
    20. head>
    21. <body>
    22. body>
    23. html>

    2)函数的 arguments 隐形参数(只在function函数内)

    就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的变量。我们管它叫隐形参数。 

    隐形参数特别像  java 基础的可变长参数一样。public void fun( Object ... args ); 可变长参数其是是一个数组。

    那么 js中的隐形参数也和 java  的可变长参数一样。操作类似数组

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. function fun(a) {
    8. alert( arguments.length );//可看参数个数
    9. alert( arguments[0] );
    10. alert( arguments[1] );
    11. alert( arguments[2] );
    12. alert("a = " + a);
    13. for (var i = 0; i < arguments.length; i++){
    14. alert( arguments[i] );
    15. }
    16. alert("无参函数 fun()");
    17. }
    18. fun(1,"ad",true);
    19. //编写一个函数。用于计算所有参数相加的和并返回
    20. function sum(num1,num2) {
    21. var result = 0;
    22. for (var i = 0; i < arguments.length; i++) {
    23. if (typeof(arguments[i]) == "number") {
    24. result += arguments[i];
    25. }
    26. }
    27. return result;
    28. }
    29. alert( sum(1,2,3,4,"abc",5,6,7,8,9) );
    30. script>
    31. head>
    32. <body>
    33. body>
    34. html>

    7、JS 中的自定义对象

    1)Object  形式的自定义对象

    1. DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. var obj = new Object();
    8. obj.name = "华仔";
    9. obj.age = 18;
    10. obj.fun = function () {
    11. alert("姓名:" + this.name + " , 年龄:" + this.age);
    12. }
    13. alert( obj.age );
    14. obj.fun();
    15. script>
    16. head>
    17. <body>
    18. body>
    19. html>

    2)花括号形式的自定义对象

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. var obj = {
    8. name:"国哥",
    9. age:18,
    10. fun : function () {
    11. alert("姓名:" + this.name + " , 年龄:" + this.age);
    12. }
    13. };
    14. alert(obj.name);
    15. obj.fun();
    16. script>
    17. head>
    18. <body>
    19. body>
    20. html>

    8、js 中的事件

    事件是电脑输入设备与页面进行交互的响应。我们称之为事件。

    常用的事件:

    • onload 加载完成事件: 页面加载完成之后,常用于做页面  js 代码初始化操作 
    • onclick 单击事件:常用于按钮的点击响应操作。
    • onblur 失去焦点事件: 常用用于输入框失去焦点后验证其输入内容是否合法。 
    • onchange 内容发生改变事件: 常用于下拉列表和输入框内容发生改变后操作
    • onsubmit 表单提交事件:常用于表单提交前,验证所有表单项是否合法。

    事件的注册(绑定)其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫事件注册或事件绑定。

    事件的注册又分为静态注册和动态注册两种:

    • 静态注册事件:通过  html 标签的事件属性直接赋于事件响应后的代码,这种方式我们叫静态注册。
    • 动态注册事件:是指先通过 js 代码得到标签的dom对象,然后再通过 dom 对象.事件名  = function(){}  这种形式赋于事件 响应后的代码,叫动态注册。

    动态注册基本步骤:

    1. 获取标签对象
    2. 标签对象.事件名    = fucntion(){}

    1)onload  加载完成事件

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. // onload事件的方法
    8. function onloadFun() {
    9. alert('静态注册 onload事件,所有代码');
    10. }
    11. // onload事件动态注册。是固定写法
    12. window.onload = function () {
    13. alert("动态注册的 onload事件");
    14. }
    15. script>
    16. head>
    17. <body>
    18. body>
    19. html>

    2)onclick 单击事件

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. function onclickFun() {
    8. alert("静态注册 onclick事件");
    9. }
    10. // 动态注册 onclick事件
    11. window.onload = function () {
    12. /*
    13. 1、获取标签对象
    14. document 是 JavaScript语言提供的一个对象(文档)
    15. getElementById 通过id属性获取标签对象
    16. **/
    17. var btnObj = document.getElementById("btn01");
    18. alert( btnObj );
    19. // 2 通过标签对象.事件名 = function(){}
    20. btnObj.onclick = function () {
    21. alert("动态注册的 onclick事件");
    22. }
    23. script>
    24. head>
    25. <body>
    26. <button onclick="onclickFun();">按钮 1button>
    27. <button id="btn01">按钮 2button>
    28. body>
    29. html>

    3)onblur 失去焦点事件

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. // 静态注册失去焦点事件
    8. function onblurFun() {
    9. // console是控制台对象,是由JavaScript语言提供,专门用来向浏览器的控制器打印输出,用于测试使用
    10. // log() 是打印的方法
    11. console.log("静态注册失去焦点事件");
    12. }
    13. // 动态注册 onblur事件
    14. window.onload = function () {
    15. //1、获取标签对象
    16. var passwordObj = document.getElementById("password");
    17. //2、通过标签对象.事件名 = function(){};
    18. passwordObj.onblur = function () {
    19. console.log("动态注册失去焦点事件");
    20. }
    21. }
    22. script>
    23. head>
    24. <body>
    25. 用户名:<input type="text" onblur="onblurFun();"><br/>
    26. 密码:<input id="password" type="text" ><br/>
    27. body>
    28. html>

    4)onchange 内容发生改变事件

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. function onchangeFun() {
    8. alert("女神已经改变了");
    9. }
    10. window.onload = function () {
    11. //1、获取标签对象
    12. var selObj = document.getElementById("sel01");
    13. //2、通过标签对象.事件名 = function(){}
    14. selObj.onchange = function () {
    15. alert("男神已经改变了");
    16. }
    17. }
    18. script>
    19. head>
    20. <body>
    21. 请选择你心中的女神:
    22. <select onchange="onchangeFun();">
    23. <option>--女神--option>
    24. <option>芳芳option>
    25. <option>佳佳option>
    26. <option>娘娘option>
    27. select>
    28. 请选择你心中的男神:
    29. <select id="sel01">
    30. <option>--男神--option>
    31. <option>国哥option>
    32. <option>华仔option>
    33. <option>富城option>
    34. select>
    35. body>
    36. html>

    5)onsubmit 表单提交事件

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript" >
    7. // 静态注册表单提交事务
    8. function onsubmitFun(){
    9. // 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
    10. alert("静态注册表单提交事件----发现不合法");
    11. return flase;
    12. }
    13. window.onload = function () {
    14. //1、获取标签对象
    15. var formObj = document.getElementById("form01");
    16. //2 通过标签对象.事件名 = function(){}
    17. formObj.onsubmit = function () {
    18. // 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
    19. alert("动态注册表单提交事件----发现不合法");
    20. return false;
    21. }
    22. }
    23. script>
    24. head>
    25. <body>
    26. <form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun();">
    27. <input type="submit" value="静态注册"/>
    28. form>
    29. <form action="http://localhost:8080" id="form01">
    30. <input type="submit" value="动态注册"/>
    31. form>
    32. body>
    33. html>

    9、DOM  模型

    DOM  全称是  Document Object Model  文档对象模型

    大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。

    1)Document 对象

    Document  对象的理解:

    1. Document  它管理了所有的 HTML 文档内容。 
    2. Document  它是一种树结构的文档。有层级关系。 
    3. 它让我们把所有的标签都对象化
    4. 我们可以通过 Document  访问所有的标签对象。 

    那么 html 标签要对象化怎么办?

    1. <body>
    2. <div id="div01">div01div>
    3. body>

    模拟对象化,相当于:

    1. class Dom{
    2. private String id; // id属性
    3. private String tagName; // 表示标签名
    4. private Dom parentNode; // 父亲
    5. private List children; // 孩子结点
    6. private String innerHTML; // 起始标签和结束标签中间的内容
    7. }

    2)Document 对象中的方法介绍

    1. document.getElementById(elementId)
    2. 通过标签的 id 属性查找标签 dom对象,elementId是标签的 id属性值
    3. document.getElementsByName(elementName)
    4. 通过标签的name属性查找标签 dom对象,elementName标签的 name属性值
    5. document.getElementsByTagName(tagname)
    6. 通过标签名查找标签 dom对象。tagname是标签名
    7. document.createElement( tagName)
    8. 通过给定的标签名,创建一个标签对象。tagName 是要创建的标签名

    注:

    • document 对象的三个查询方法,如果有 id 属性,优先使用  getElementById方法来进行查询 
    • 如果没有 id属性,则优先使用  getElementsByName方法来进行查询
    • 如果 id 属性和 name属性都没有最后再按标签名查  getElementsByTagName 

    以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象。

    getElementById 方法示例代码

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript" >
    7. /*
    8. 当用户点击了较验按钮,要获取输出框中的内容。然后验证其是否合法。
    9. 验证的规则是:必须由字母,数字。下划线组成。并且长度是 5到 12位。
    10. **/
    11. function onclickFun() {
    12. // 1、当我们要操作一个标签的时候,一定要先获取这个标签对象。
    13. var usernameObj = document.getElementById("username");
    14. var usernameText = usernameObj.value;
    15. // 如何验证字符串符合某个规则 ,需要使用正则表达式技术
    16. var patt = /^\w{5,12}$/;
    17. var usernameSpanObj = document.getElementById("usernameSpan");
    18. // innerHTML 表示起始标签和结束标签中的内容,这个属性可读,可写
    19. usernameSpanObj.innerHTML = "国哥真可爱!";
    20. //test()方法用于测试某个字符串,是不是匹配我的规则
    21. if (patt.test(usernameText)) {
    22. usernameSpanObj.innerHTML = "用户名合法!";
    23. } else {
    24. usernameSpanObj.innerHTML = "用户名不合法!";
    25. }
    26. script>
    27. head>
    28. <body>
    29. 用户名:<input type="text" id="username" value="wzg"/>
    30. <span id="usernameSpan" style="color:red;">span>
    31. <button onclick="onclickFun()">较验button>
    32. body>
    33. html>

    getElementsByName 方法示例代码

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. //让所有复选框都选中
    8. function checkAll() {
    9. /*
    10. 根据指定的name属性查询返回多个标签对象集合,这个集合的操作跟数组一样,
    11. 集合中每个元素都是dom对象,这个集合中的元素顺序是他们在html页面中从上到下的顺序
    12. **/
    13. var hobbies = document.getElementsByName("hobby");
    14. for (var i = 0; i < hobbies.length; i++){
    15. hobbies[i].checked = true;
    16. }
    17. }
    18. //全不选
    19. function checkNo() {
    20. var hobbies = document.getElementsByName("hobby");
    21. for (var i = 0; i < hobbies.length; i++){
    22. hobbies[i].checked = false;
    23. }
    24. }
    25. // 反选
    26. function checkReverse() {
    27. var hobbies = document.getElementsByName("hobby");
    28. for (var i = 0; i < hobbies.length; i++) {
    29. hobbies[i].checked = !hobbies[i].checked;
    30. }
    31. }
    32. script>
    33. head>
    34. <body>
    35. 兴趣爱好:
    36. <input type="checkbox" name="hobby" value="cpp" checked="checked">C++
    37. <input type="checkbox" name="hobby" value="java">Java
    38. <input type="checkbox" name="hobby" value="js">JavaScript
    39. <br/>
    40. <button onclick="checkAll()">全选button>
    41. <button onclick="checkNo()">全不选button>
    42. <button onclick="checkReverse()">反选button>
    43. body>
    44. html>

    getElementsByTagName 方法示例代码

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. // 全选
    8. function checkAll() {
    9. /*
    10. 按照指定标签名来进行查询并返回集合,这个集合的操作跟数组一样,集合中都是dom对象
    11. 集合中元素顺序是他们在 html页面中从上到下的顺序。
    12. **/
    13. var inputs = document.getElementsByTagName("input");
    14. for (var i = 0; i < inputs.length; i++){
    15. inputs[i].checked = true;
    16. }
    17. }
    18. script>
    19. head>
    20. <body>
    21. 兴趣爱好:
    22. <input type="checkbox" value="cpp" checked="checked">C++
    23. <input type="checkbox" value="java">Java
    24. <input type="checkbox" value="js">JavaScript
    25. <br/>
    26. <button onclick="checkAll()">全选button>
    27. body>
    28. html>

    createElement 方法示例代码

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <script type="text/javascript">
    7. window.onload = function () {
    8. // 使用js代码来创建 html标签,并显示在页面上
    9. var divObj = document.createElement("div"); // 在内存中
    10. var textNodeObj = document.createTextNode("国哥,我爱你");
    11. divObj.appendChild(textNodeObj); //
      国哥,我爱你
    12. // divObj.innerHTML = "国哥,我爱你"; //
      国哥,我爱你
      ,但,还只是在内存中
    13. // 添加子元素
    14. document.body.appendChild(divObj);
    15. }
    16. script>
    17. head>
    18. <body>
    19. body>
    20. html>

    3)节点的常用属性和方法

    方法:

    • getElementsByTagName():获取当前节点的指定标签名孩子节点 
    • appendChild( oChildNode ):可以添加一个子节点,oChildNode 是要添加的孩子节点

    属性:

    • childNodes:获取当前节点的所有子节点 
    • firstChild:获取当前节点的第一个子节点 
    • lastChild:获取当前节点的最后一个子节点 
    • parentNode:获取当前节点的父节点 
    • nextSibling:获取当前节点的下一个节点 
    • previousSibling:获取当前节点的上一个节点 
    • className:用于获取或设置标签的  class 属性值 
    • innerHTML:表示获取/设置起始标签和结束标签中的内容 
    • innerText:表示获取/设置起始标签和结束标签中的文本

  • 相关阅读:
    Jenkins部署springboot项目至远程服务器
    编译链接(Compile Link)
    java 基于 SpringMVC+Mybaties+ Html5 + Vue 前后端分离 房地产管理系统 的 设计与实现
    MyBatis之缓存
    Java简系 - Java入门「一」
    数据结构——单调栈
    景区AR虚拟三维场景沉浸式体验成为新兴的营销手段
    分布式计算模型Mapreduce实践与原理剖析(二)
    【测试沉思录】20. 如何做好测试需求分析?
    RxJava2 + Retrofit2 处理data为null的情况
  • 原文地址:https://blog.csdn.net/qq_51409098/article/details/126179674