JavaWeb_JavaScript

这篇博客详细介绍了JavaScript的基础知识,包括与HTML的结合方式、变量类型、数组、函数的定义及用法,特别是深入探讨了JS中的事件,如onload、onclick等,并讲解了DOM模型中的一些关键操作,如正则表达式和元素查询方法。
摘要由CSDN通过智能技术生成

一.JavaScript和html代码结合

1.第一种方式

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        alert("hello javaScript!");
    </script>
</head>

2.第二种方式

    <script type="text/javascript" src="hello.js"></script>

hello.js

alert("2022 hello!");

二.变量

数值:number
字符串:string
对象:object
布尔:boolean
函数:function
特殊的值:undefined未赋予初始值的默认值,null空值,NAN非数字非数值

<script type="text/javascript">
        let i;
        alert(i);/*undefine*/
        i=12;
        alert(typeof i);/*number*/
        i="abc";
        alert(typeof i);/*string*/

        let a=12;
        let b="abc";
        alert(a*b);/*NaN*/
    </script>

1.关系运算

等于:== 简单的做字面值的比较
全等于:=== 除了字面值的比较还有变量的类型

    <script type="text/javascript">
        let a="12";
        let b=12;
        alert(a==b);/*true*/
        alert(a===b);/*false*/
    </script>

2.逻辑运算

且&& 或|| 反!
所有的变量都可作为一个boolean变量去使用
0、null、undefine、""(空串)都认为是false

&&
全真:返回最后一个表达式的值
假:返回第一个为假的表达式
||:
全假:返回最后一个表达式的值
真:返回第一个为真的表达式

三.数组

<script type="text/javascript">
        let arr=[];/*定义一个空数组*/
        alert(arr.length);//0
        /*JavaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组扩容操作*/
        arr[2]="abc";
        alert(arr.length);//3
        alert(arr[1]);//undefine
    </script>
    <script type="text/javascript">
        let arr=[1,"abc",true];
        for (let i = 0; i < arr.length; i++) {
            alert(arr[i]);
        }
    </script>

四.函数

1.函数定义的方式

方式一
<script type="text/javascript">
        function sum(num1,num2){
            let res=num1+num2;
            return res;
        }

        alert(sum(20,30));
    </script>
方式二
    <script type="text/javascript">
        let sum=function(num1,num2){
            let res=num1+num2;
            return res;
        }

        alert(sum(20,30));
    </script>

函数不允许重载,一样的定义会覆盖上一次

2.隐形参数arguments

    <script type="text/javascript">
        function sum(num1,num2){
            let res=0;
            for (let i = 0; i < arguments.length; i++) {
                if (typeof arguments[i]=="number")
                  res+=arguments[i];
            }
            return res;
        }
        alert(sum(1,2,3,4,5,6,7,"abc",8,9,10));//55
    </script>

五.JS中的自定义对象

1.Object定义对象

    <script type="text/javascript">
        let obj = new Object();
        obj.name="张三";
        obj.age=18;
        obj.show=function(){
            alert("name:"+this.name+", age:"+this.age);
        }
        obj.show();
    </script>

2.{}定义对象

    <script type="text/javascript">
        let obj={
            name:"张三",
            age:18,
            show:function() {
                alert("name:" + this.name + ", age:" + this.age)
            }
        };
        obj.show();
    </script>

六.JS中的事件

事件的注册:告诉浏览器,事件响应后,需要执行的操作代码
静态注册:通过HTML标签的事件属性直接赋予事件响应后的代码
动态注册:通过js代码得到的标签DOM对象,再通过DOM对象.事件名=function(){}这种形式赋予事件响应后的代码

1.onload加载完成事件

常用于页面js代码初始化
静态注册

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function onloadFun(){
            alert('静态注册onload事件');
        }
    </script>
</head>
<body onload="onloadFun()">
</body>


动态注册

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        window.onload=function (){
            alert('动态注册的onload事件');
        }
    </script>
</head>
<body>
</body>

2.onclick单击事件

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function onclickFun(){
            alert("静态注册onclick事件");
        }
        window.onload=function (){
            let obj=document.getElementById("btn01");
            obj.onclick=function () {
                alert('动态注册onload事件');
            }
        }
    </script>
</head>
<body>
<button onclick="onclickFun()">按钮1</button>
<button id="btn01">按钮2</button>
</body>

3.onblur失去焦点事件

常用于输入框失去焦点后验证其输入是否合法

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function onblurFun(){
            console.log("静态注册onblur事件");
            //console控制台对象,专门用来向浏览器的控制台打印输出,用于测试使用
            //log是打印的方法
        }
        window.onload=function (){
            let obj=document.getElementById("password");
            obj.onblur=function () {
                console.log("动态注册onblur事件");
            }
        }
    </script>
</head>
<body>
用户姓名:<input type="text" onblur="onblurFun()"><br>
用户密码:<input type="text" id="password"><br>
</body>

4.onchange内容发生改变事件

下拉列表和输入框内容发生改变后操作

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function onchangeFun(){
            alert("姓名已经改变了!");
        }
        window.onload=function (){
            let obj=document.getElementById("num");
            obj.onchange=function (){
                alert("数字已经改变了!");
            }
        }
    </script>
</head>
<body>
请选择正确的姓名:
<select onchange="onchangeFun()">
    <option>张三</option>
    <option>李四</option>
    <option>王五</option>
</select>
<br>
请选择正确的数字:
<select id="num">
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>
</body>

5.onsubmit表单提交事件

验证表单项是否合法,如果不合法则阻止提交

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function onsubmitFun(){
            alert("静态注册onsubmit事件");
            return false;
        }
        window.onload=function (){
            let obj=document.getElementById("form");
            obj.onsubmit=function (){
                alert("动态注册onsubmit事件");
                return false;
            }
        }
    </script>
</head>
<body>
<form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun()">
    <input type="submit" value="静态注册">
</form>
<form action="http://localhost:8080" method="get" id="form">
    <input type="submit" value="动态注册">
</form>
</body>

七.DOM模型

1.验证用户名是否有效

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function onclickFun() {
            let obj=document.getElementById("usrname");
            let usrName=obj.value;
            let patt=/^\w{5,12}$/;

            let tipe=document.getElementById("tipe");

            /*test方法用于测试某个字符串,是不是匹配规则*/
            if(patt.test(usrName)){
                tipe.innerHTML="用户名合法!";
            }else{
                tipe.innerHTML="用户名不合法!";
            }
        }
    </script>
</head>
<body>
<!--验证规则:必须由数字,字母,下划线组成,长度5-12-->
    用户名:<input type="text" id="usrname">
    <span style="color: red" id="tipe"></span>
    <button onclick="onclickFun()">校验</button>
</form>
</body>

2.正则表达式

字符描述
[abc]查找方括号之间的任何字符。
[0-9]查找任何从 0 至 9 的数字。
(xly)查找任何以l分隔的选项。
\w包括大写字母、小写字母、下划线、数字。
\d查找数字。
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。
n{X}匹配包含X个连续的 n 的字符串。
n{X,Y}匹配包含X-Y个连续的 n 的字符串。
n$匹配以n结尾的字符串。
n^匹配以n开头的字符串。

注意:^……$表示从头到尾检查
常用正则表达式

3.getElementsByName方法

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">

        function clickAll() {
            let hobbies=document.getElementsByName("hobby");
            for (let i = 0; i < hobbies.length; i++) {
                hobbies[i].checked=true;
            }
        }
        function clickNone(){
            let hobbies=document.getElementsByName("hobby");
            for (let i = 0; i < hobbies.length; i++) {
                hobbies[i].checked=false;
            }
        }
        function clickReverse(){
            let hobbies=document.getElementsByName("hobby");
            for (let i = 0; i < hobbies.length; i++) {
                hobbies[i].checked=!hobbies[i].checked;
            }
        }
    </script>
</head>
<body>
    兴趣爱好:
    <input type="checkbox" name="hobby" value="cpp">c++
    <input type="checkbox" name="hobby" value="java">java
    <input type="checkbox" name="hobby" value="js">javaScript
    <br>
    <button onclick="clickAll()">全选</button>
    <button onclick="clickNone()">全不选</button>
    <button onclick="clickReverse()">反选</button>
</form>
</body>

4.getElementsByTagName方法

将上述例子中的 let hobbies=document.getElementsByName(“hobby”); 改为

let hobbies=document.getElementsByTagName("input");

document对象的三个查询方法:
优先级:id->name->tapName
以上三个方法代码一定要在页面加载完成之后执行,才能查询到标签

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值