js入门学习

今天学习了js的基础入门,作为后端程序员对js的常用方法和格式语法了解就行,不必深学
时间: 2022/5/8

JS概述

JavaScript是用来实现页面交互的一门编程语言

JavaScript历史

  • **起源:**上世纪末,Netscape(网景)公司推出Navigator浏览器。发布后用的人不多,这咋整啊?这家公司就想了一个好方案,不仅在浏览器实现静态HTML,还想要有动态效果,比如:在前端处理表单验证。
  • **动手:**有目标就去做,网景公司大牛多,Brendan Eich(布兰登·艾奇)据说就用了10天就把JavaScript搞了出来,刚出来时叫LiveScript,为了蹭蹭当红明星Java热度,就改成JavaScript了(瞬间就火了),事实上他们两没啥关系。
  • **竞争:**看到网景公司有了js,微软感觉不行啊,我的IE要被干掉啊,同时也感到js的前途无量,于是参考JavaScript弄了个名为JScript浏览器脚本语言。
  • 标准: Netscape和微软竞争出现的js导致版本的不一致,随着业界的担心,JavaScript的标准化被提上议事日程。ECMA(欧洲计算机制造商协会)组织就去干这事,最后在1997年弄出了ECMAScript作为标准。

JavaScript组成

组成部分作用
ECMA Script构成了JS核心的语法基础
BOMBrowser Object Model 浏览器对象模型,用来操作浏览器上的对象
DOMDocument Object Model 文档对象模型,用来操作网页中的元素(标签)

JS基础

HTML引入JS

	1. 内部js <script type="text/javascript"> js代码 </script>

	2. 外部js <script type="text/javascript" src="外部js文件"></script>
		注意: 
		1.如果引入了外部js,当前标签就不能再写内部js
		2.页面是从上往下加载的 上面的js代码不能获取下面的html元素

输出语句
JS三种输出方式:
1. 浏览器弹框输出字符 alert(‘哈哈’)
2. 输出html内容到页面 document.write(‘呵呵’)
3. 输出到浏览器控制台 console.log(‘嘻嘻’)

<script>
    // 1. 浏览器弹框输出字符   alert('哈哈')
    alert("哈哈");

    // 2. 输出html内容到页面   document.write('呵呵')
    document.write("呵呵");

    // 3. 输出到浏览器控制台   console.log('嘻嘻')
    //浏览器的控制台打开:  F12 (+Fn)
    console.log("嘻嘻");

</script>

变量声明
下面变量和常量的声明都是基于JS6版本讲解的, 所以必须先将idea中JS的版本调整为6

在JS中声明变量主要用到的关键字是let, 声明常量用到的关键字是const,而且声明时不用理会数据的类型

数据类型

基本类型:
    * string:字符串类型(单引号双引号都可以)
    * number:数值类型
    * boolean:布尔型
    * undefined:未定义的,未赋值的
    * null:赋值为null

对象类型:
	* object: 其他对象类型

获取变量类型的方式:
	typeof(变量名)
<script>
    //定义字符串
    let s = 'abc';
    //定义整数
    let a = 10;
    let b;
    let i = null;
    let q = true;
    document.write(" s=" + typeof(s));
    document.write(" a=" + typeof(a));
    document.write(" b=" + typeof(b));
    document.write(" i=" + typeof(i));
    document.write(" q=" + typeof(q));
    //定义常量
    const c = 10;
    //c = 20; 报错

</script>

运算符
js与java的运算符一样,算数运算符、赋值运算符、逻辑运算符等等,不需要死记硬背,写程序会用就行

  1. 算数运算符
    + - * / % ++ –
  2. 赋值运算符
    = += -= *= /=
  3. 比较运算符
    > < == === !=
  4. 逻辑运算符
    && || !
  5. 三元运算符
    条件表达式?为真 : 为假
<script>
    // ==   比较两个变量的内容是否一致
    // ===  比较两个变量的内容和类型是否一致

    let a = 123;
    let b = 123;
    let c = "123";

    document.write(a==b);  //true
    document.write(a===b); //true

    document.write(a==c);  //true
    document.write(a===c); //false

    let d = "true";
    let q = "1";
    let e = true;   //做比较时:true变成1  false变成0
    alert(d==e);   //false
    alert(q==e);   //true

</script>

条件判断

在JS中条件判断主要有两种: if和switch,其使用方式和Java一致

  1. if判断
    if (条件表达式) {
    代码块;
    } else if(条件表达式) {
    代码块;
    } else {
    代码块;
    }

  2. switch判断
    switch(条件表达式){
    case 值1 :
    代码块 break;
    case 值2 :
    代码块 break;
    default:
    默认代码块;
    }

循环语句

在JS中, 用于实现循环的语法主要是forwhile

  1. 普通for循环
    for(let i= 0; i<10; i++){
    需要执行的代码;
    }

  2. 增强for循环
    for(let obj of array){
    需要执行的代码;
    }

  3. while循环
    while (条件表达式) {
    需要执行的代码;
    }

  4. do…while循环
    do{
    需要执行的代码;
    }while(条件表达式);

  5. break和continue
    break: 跳出整个循环
    continue:跳出本次循环

<script>
    //1. 普通for循环
    for(let i=0; i<10; i++){
        document.write(i);
    }

    //创建数组(一会学)
    let arr = [11,22,33,44];

    //2.增强for循环
    for(let a of arr){
        document.write(a);
    }

    //3. while循环
    let i = 1;
    while(i<=10){
        document.write(i);
        if(i%3==0){
            break;
        }
        i++;
    }
</script>

函数[重点]
功能:js函数用于执行特定功能的代码块,为了方便理解也可以称为js方法(其作用就类似于Java中的方法)

在JS中函数分为两种,分别是普通函数匿名函数

普通函数
function 方法名(参数列表){
方法实现
}

匿名函数
function (参数列表){
方法实现
}

普通函数
语法:
function 函数名(形参1, 形参2){
方法实现
}

调用:
函数名(实参1,实参2)

特点:

  1. js的函数形参不需要写数据的类型
  2. js的函数不需要写返回值类型,可以直接写return返回值
  3. js的函数形参和实参个数不一致也可以调用,语法不严格
<script>
    //定义函数
    function method(a,b) {
        alert(a);
        alert(b);
    }
    //调用函数
    method("abc",123);
</script>

匿名函数
先记住语法格式,一会讲到js的事件,它就有用了!!!!

<script>
    //匿名函数
    let method1 = function () {
                    alert(123);
                };

    method1();
</script>

事件[重点]

时间监听机制:

​ 给一个事件源绑定一个事件, 当事件发生就执行指定的方法.

​ 事件源: 指定的一个元素

​ 事件: 具体的一个动作

​ 方法: 就是要执行的代码.;

事件绑定方式:
通过事件,可以将HTML上的元素跟函数绑定在一起来完成一些具体的功能。

绑定方式有两种:1.在标签上绑定事件 2.在js中绑定事件

<script>
    //要给这个按钮绑定单击事件,绑定方式有两种
    //1.在标签上绑定事件  2.在js中绑定事件
    function aaa() {
        alert("你点到我了~~");
    }

</script>
<input type="button" value="请点我" onclick="aaa()">
<input type="button" value="请点我">

<script>
    //要给这个按钮绑定单击事件,绑定方式有两种
    //1.在标签上绑定事件  2.在js中绑定事件
    //获取input按钮
    let e = document.getElementsByTagName("input");

    //给元素绑定事件
    e[0].onclick = function () {
        alert("你点到我了~~");
    }
</script>

常用事件

  1. 点击事件:
    1. onclick :单击事件(**)
    2. ondblclick:双击事件

  2. 焦点事件
    1. onblur:失去焦点(**)
    2. onfocus:获得焦点

  3. 加载事件:
    1. onload:页面加载完成后立即发生

  4. 鼠标事件:
    1. onmousedown 鼠标按钮被按下
    2. onmouseup 鼠标按键被松开
    3. onmousemove 鼠标被移动
    4. onmouseover 鼠标移到某元素之上()
    5. onmouseout 鼠标从某元素移开(
    )

  5. 键盘事件:
    1. onkeydown 某个键盘按键被按下
    2. onkeyup 某个键盘按键被松开
    3. onkeypress 某个键盘按键被按下

  6. 改变事件
    1. onchange 域的内容被改变

  7. 表单事件:
    1. onsubmit 提交按钮被点击(*)这个事件不是加在submit元素上,是加在form元素上

内置对象[了解]

String对象

创建方式:
let s = new String(“字符串”);
常见方法:
和java中的同名方法功能也相同

let s = new String("abc");
let s2 = "abc";

let a = s.charAt(1);

alert(typeof (s));   //object
alert(typeof (s2));  //string
alert(a);

Array对象

  1. 创建数组:
    let arr = [1,2,3];
    注意:JS数组不区分数据类型,而且其长度可以随意改变,因此JS数组类似于Java中的集合

  2. 数组方法[不用记]:
    合并:concat() 合并数组
    添加:push() 尾部添加 / unshift() 头部添加
    删除:pop() 尾部删除 / shift() 头部删除
    转字符串:join(分隔符)

//创建数组
    let arr = ["abc",22,33,44];

    arr[5] = 100;

    //给末尾添加元素
    arr.push(200);

    //获取末尾的元素
    let a2 = arr.pop();
    alert(a2);

    //要把数组转成字符串,用=分割元素
    let s3 = arr.join("=");
    alert(s3);

    for(let a of arr){
        document.write(a+" ");
    }

BOM&DOM

BOM对象
BOM(Browser Object Model )浏览器对象模型,其作用是把浏览器抽象成为一个对象模型,然后可以使用js模拟浏览器的一些功能。
dom,bom对象图解
Window弹框
Window对象可以实现三种弹框:警告窗(alert)、确认窗(confirm) 、输入窗(prompt)

<script>
    window.alert("");   //用window调用的方法付  window.可以省略
    
    //警告弹窗
    alert("哈哈");

    //确认弹窗
    let b = confirm("是否保存密码");
   document.write(b);

    //输入弹窗
    let s = prompt("请输入:");

</script>

Window定时器
Window对象可以实现两种定时器:setInterval(周期性任务)、setTimeout(一次性任务)

<script>
	//定时器方法的返回值是这个定时器的编号.每次创建的定时器都有一个编号
    //setInterval(周期性任务)
    //每3秒执行一次方法
    let a = setInterval(function () {
        alert("哈哈");
    },3000);
    // setTimeout(一次性任务)
    //倒计时三秒之后执行一次
    let b = setTimeout(function () {
        alert("哈哈");
    },3000);
    //关闭定时器的方法
    clearInterval(a);
    clearTimeout(b);
</script>

Location地址栏

Location对象指的是浏览器的地址栏,它的主要作用是地址的获取、刷新和跳转

reload() 重新加载页面
href 获取当前地址
href=“新地址” 修改当前地址,跳转页面

<input type="button" value="按钮" id="a">
<script>
    //获取这个按钮元素
    let b = document.getElementById("a");
    //给元素绑定单击事件
    b.onclick = function () {
        //重新加载当前页面,刷新
        //location.reload();
        //获取当前路径
        //let q = location.href;
        //alert(q);

        //修改路径为百度
        location.href = "https:\\www.baidu.com";
    }
</script>

案例:轮播图

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<img src="img/1.jpg" alt="" width="70%" height="400px" id="a">


<script>
    //定义变量
    let i = 1;
    //获取img元素
    let img = document.getElementById("a");


    //定义循环定时器
    setInterval(function(){
        //i++
        i++;
        //判断
        if(i>5){
            i = 1;
        }
        //把图片的src路径做修改
        img.src = "img/"+i+".jpg";
    }, 2000);

</script>
</body>
</html>

DOM对象
DOM(Document Object Model)文档对象模型,其作用是把HTML页面内容抽象成为一个Document对象,然后可以使用js动态修改页面内容。

HTML上元素, 属性, 内容 都算是DOM的对象, 都可以使用js代码来操作

获取元素对象
document.getElementById(id属性值)
document.getElementsByTagName(标签名)
document.getElementsByClassName(class属性值)
document.getElementsByName(name属性值)

    <div id="a" class="abc" name="user">石原里美</div>
    <div class="abc">新垣结衣</div>
    <span id="b" class="abc">花泽香菜</span>
    <span name="user">斋藤飞鸟</span>

<script>

    //document.getElementById(id属性值) :获取到一个元素,返回元素
    let e1 = document.getElementById("a");
    //console.log(e1);

    //document.getElementsByTagName(标签名) :获取到多个元素,返回元素的数组
    let e2 = document.getElementsByTagName("span");
    //console.log(e2[0]);
    //console.log(e2[1]);

    //document.getElementsByClassName(class属性值)
    let e3 = document.getElementsByClassName("abc");
    //console.log(e3);

    //document.getElementsByName(name属性值)
    let e4 = document.getElementsByName("user");

    //js中操作元素时要操作单个元素,不能直接操作数组
    let arr = document.getElementsByTagName("span");
    //绑定鼠标移入
    for(let a of arr){
        a.onmouseover = function () {
            //就弹出窗口
            alert("哈哈");
        }
    }

</script>

操作DOM内容
获取元素的内容: js对象.innerHTML
修改元素的内容: js对象.innerHTML=‘xxx’
js对象.outerHTML

<div>大厦春</div>

<script>
    //获取元素
    let a = document.getElementsByTagName("div");

    //获取元素里面的内容
    //let s = a[0].innerHTML;
    //弹出内容
    //alert(s);

    //设置元素的内容
    a[0].innerHTML = "马冬梅";

</script>

操作DOM属性
获取元素的属性: js对象.属性名
设置元素的属性: js对象.属性名=‘xxx’

注意: 只有元素的固有属性可以这样去操作

<img src="img/1.jpg" alt="" id="img">

<input type="text" name="username" id="aaa">

<script>
    //修改图片的路径
    //1.获取图片元素
    let img = document.getElementById("img");
    //2.修改图片的src属性
    img.src = "img/2.jpg";

    //获取输入框的值
    //1.获取输入框元素
    let input = document.getElementById("aaa");
    //2.给元素绑定失去焦点
    input.onblur = function () {
        //3.获取输入框的值弹出
        alert(input.value);
    }

</script>

操作DOM样式
使用js的设置css样式:
js对象.style.样式名=‘样式值’

使用js配合css设置样式:
js对象.className=‘值’

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        .c{
            color: pink;
        }

        .d{
            color: green;
        }
    </style>
</head>
<body>
<div id="d1">石原里美</div>


<input type="button" value="点我" id="i1">
<input type="button" value="点我" id="i2">


<script>
    //分别获取两个按钮
    let button1 = document.getElementById("i1");
    let button2 = document.getElementById("i2");
    //获取div元素
    let div = document.getElementById("d1");

    //如果点击第一个按钮文字显示成粉色
    button1.onclick = function () {
        //js对象.style.样式名='样式值'
        //div.style.color = "pink";


        //js对象.className = "class值";
        div.className = "c";
    };
    //如果点击第二个按钮文字显示成绿色
    button2.onclick = function () {
        //div.style.color = "green";
        div.className = "d";
    };
</script>
</body>
</html>

正则表达式

作用:根据定义好的规则,过滤文本内容;这里我们用于校验表单

  • 正则语法:
    let regex = /^正则表达式$/; 创建正则规则
    regex.test(字符串) 判断指定字符串是否符合正则规则

  • 常见符号:
    ^ 表示匹配字符串的开始位置
    $ 表示匹配字符串的结束位置

    • 表示匹配 零次到多次
    • 表示匹配 一次到多次 (至少有一次)
      ? 表示匹配零次或一次
      . 表示匹配单个字符
      | 表示为或者,两项中取一项
      ( ) 小括号表示匹配括号中全部字符
      [ ] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]
      { } 大括号用于限定匹配次数 如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符 {n,m}表示至少n,最多m
      \ 转义字符 如上基本符号匹配都需要转义字符 如 * 表示匹配*号
      \w 表示英文字母和数字
      \d 表示数字
<script>
    //let regex = /^正则表达式$/;          创建正则规则
    //regex.test(字符串)                 判断指定字符串是否符合正则规则

    //  在""的里面写\就要写成\\  , 如果不在""里面\就只需要写一根\
    let regex = /^\w{6,12}$/;

    let s = "qwertyu";

    //比较
    let b = regex.test(s);
    alert(b);
</script>

案例:表单校验

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>表单校验</title>
    <link rel="stylesheet" href="../css/register.css">
    <style>
        span{
            color: red;
            font-size: 12px;
            /*display: none;*/
        }
    </style>
</head>
<body>
<table width="100%" cellspacing="0" cellpadding="0">
    <tr>
        <td>
            <img src="../img/top_banner.jpg" width="100%" alt="">
        </td>
    </tr>
    <tr>
        <td>
            <img src="../img/logo.png" width="100%" alt="">
        </td>
    </tr>
    <tr height="40px" align="center">
        <td bgcolor="#ffc900">
            首页 &emsp;&emsp;&emsp;&emsp;&emsp;
            周边游 &emsp;&emsp;&emsp;&emsp;&emsp;
            山水游 &emsp;&emsp;&emsp;&emsp;&emsp;
            古镇游 &emsp;&emsp;&emsp;&emsp;&emsp;
            出境游 &emsp;&emsp;&emsp;&emsp;&emsp;
            国内游 &emsp;&emsp;&emsp;&emsp;&emsp;
            港澳游 &emsp;&emsp;&emsp;&emsp;&emsp;
            台湾游 &emsp;&emsp;&emsp;&emsp;&emsp;
            5A景点游 &emsp;&emsp;&emsp;&emsp;&emsp;
            全球自由行 &emsp;&emsp;&emsp;&emsp;&emsp;
        </td>
    </tr>
    <tr height="500px">
        <td>
            <div class="content">
                <div class="rg_form">
                    <div class="rg_form_left">
                        <p style="color: #ffc900;font-size: 20px;">用户注册</p>
                        <p style="color: #aeb2c9;font-size: 20px">USER REGISTER</p>
                    </div>
                    <div class="rg_form_center">
                        <form action="#" method="get" id="myForm">
                            <table>
                                <tr>
                                    <td class="td_left">用户名</td>
                                    <td>
                                        <input type="text" id="username" name="username" placeholder="请输入6-12位数字或字母">
                                        <span id="userInfo"> </span>
                                    </td>

                                </tr>
                                <tr>
                                    <td class="td_left">手机号</td>
                                    <td>
                                        <input type="text" id="telephone" name="telephone" placeholder="请输入手机号">
                                        <span id="telInfo"> </span>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="td_left">密码</td>
                                    <td>
                                        <input type="password" id="password" name="password" placeholder="请输入密码">
                                        <span id="pwdInfo"> </span>
                                    </td>
                                </tr>
                                <tr>
                                    <td class="td_left">验证码</td>
                                    <td>
                                        <input type="text" name="smsCode" id="smsCode" placeholder="请输入验证码">
                                        <a href="#">发送手机验证码</a>
                                        <span id="codeInfo"></span>
                                    </td>
                                </tr>

                                <tr>
                                    <td></td>
                                   <td  width="373">
                                        &emsp;&emsp;<input type="submit" value="注册">
                                    </td>
                                </tr>

                            </table>
                        </form>
                    </div>
                    <div class="rg_form_right">
                        <p>已有账号?<a href="#" style="text-decoration: none;color: #fcb1b1">立即登录</a></p>
                    </div>
                </div>
            </div>
        </td>
    </tr>
    <tr>
        <td>
            <img src="../img/footer_service.png" width="100%" alt="">
        </td>
    </tr>
    <tr>
        <td bgcolor="#ffc900" height="50px" align="center">
            江苏传智播客教育科技股份有限公司 版权所有Copyright 2006-2020, All Rights Reserved 苏ICP备16007882
        </td>
    </tr>
</table>


<script>

    //定义一个判断用户名的方法
    function aaa(){
            //1.获取用户名元素
            let username = document.getElementById("username");
            //3.如果失去焦点获取输入框里面用户填写的值
            let s = username.value;
            //4.写正则表达式做判断
            let regex = /^[a-zA-Z0-9]{6,12}$/;
            if(!regex.test(s)){
                //5.如果判断结果是false,就给输入框后面加上"用户名格式不合法"
                //5.1获取用户名后面的span元素
                let userInfo = document.getElementById("userInfo");
                //5.2给这个元素设置内容
                userInfo.innerHTML = "用户名格式不合法";
                //返回值
                return false;
            }else{
                //5.3如果判断结果是true,就把不合法的内容去掉
                let userInfo = document.getElementById("userInfo");
                userInfo.innerHTML = "";
                //返回值
                return true;
            }
    }


    //对用户名做判断
    //1.获取用户名元素
    let username = document.getElementById("username");
    //2.给元素绑定失去焦点
    username.onblur = function () {
        aaa();
    };


    //获取form表单元素
    let form = document.getElementById("myForm");
    //绑定提交事件
    form.onsubmit = function () {
        //这个事件的方法有返回值,如果返回true就代表允许提交,如果返回false就代表阻止提交
        let b = aaa();
        return b;
    }

</script>
</body>
</html>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皇家小黄

创作不易!!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值