JavaScript快速入门

什么是JavaScript?

JavaScript是一门跨平台、面向对象的脚本语言,用来控制网页的行为,能使网页可交互。

W3C标准:网页主要由三部分组成
结构:HTML;表现:CSS;行为:JavaScript

引入方式

1、内部脚本:将JS代码定义在HTML页面中。
在这里插入图片描述

2、外部脚本:将JS代码定义在外部JS文件中,然后引入到HTML页面中。
在这里插入图片描述

基础语法

书写语法

1、区分大小写
2、结尾的分号可有可无
3、注释:单行注释、多行注释
4、大括号代表代码块

输出语句

window.alert()写入警告框
document.write()写入HTNL输出
console.log()写入浏览器控制台

变量

var:	
	1、作用域:全局
	2、变量可以重复定义
{
	let age = 30;
	var age = 30;
}
alert(age);

在这里插入图片描述

数据类型

分为两类:原始类型和引用类型

5种原始类型:
number:数字(整数、小数、NaN)
string:字符、字符串、单双引号皆可
boolean:布尔类型
null:对象为空
undefined:当声明的变量未初始化时,该变量的默认值是undefined

使用typeof运算符可以获取数据类型

alert(typeof age);

运算符

在这里插入图片描述

==1、先判断类型是否一样,如果不一样,则进行类型转换
	2、再去比较其值
全等于 ===1、先判断类型是否一样,如果不一样,直接返回false
	2、再去比较其值

类型转换:
1、其他类型转为number

  • string:按照字符串的字面值,转为数字,如果字面值不是数字,则转为NaN。一般使用parseInt
  • boolean:true转为1,false转为0。

2、其他类型转为boolean

  • number:0和NaN转为false,其他的数字转为true
  • string:空字符串转为false,其他字符串转为true
  • null:false
  • undefined:false

流程控制语句

if
switch
for
while
do...while

函数

函数是被设计为执行特定任务的代码块

在这里插入图片描述

在这里插入图片描述

常用对象

Array

定义:
	var 变量名 = new Array(元素列表);
		如:var arr = new Array(1,2,3); 
	var 变量名 = [元素列表];
		如:var arr = [1,2,3];
访问:
	arr[索引] =;
		如:arr[0] = 1;
JS数组类似于Java集合,长度、类型都可变

Array属性:
length:数组中元素的个数
方法:
push:添加方法

var arr = [1,2,3];
arr.push(10);
alert(arr);

splice:删除元素

var arr = [1,2,3];
arr.splice(0,1);
alert(arr);

String

定义:
	var 变量名 = new String(s);
		如:var str = new String("hello"); 
	var 变量名 = s;
		如:var str = 'hello';
属性:
	length:字符串长度
方法:
	charAt() 返回在指定位置的字符
	indexOf() 检索字符串
	trim() :去除字符串前后两端的空白字符

自定义对象

格式:
		var 对象名称 = {
			属性名称1:属性值1,
			属性名称2:属性值2,
			.......
			函数名称:function(形参列表){}
			......
		};
	如:
	var person = {
		name:"zhangsan",
		age:23,
		eat:function(){
		alert("干饭~~~");
		}
	};

BOM(浏览器对象模型)

JavaScript将浏览器的各个组成部分封装为对象、

组成:
Window:浏览器窗口对象
Navigator:浏览器对象
Screen:屏幕对象
History:历史记录对象
Location:地址栏对象

Window对象

获取:直接使用window,其中window.可以省略
	window.alert("abc");
属性:获取其他BOM对象
	history    对History对象的只读引用
	NavigatorNavigator对象的只读引用
	ScreenScreen对象的只读引用
	location	用于窗口或框架的Location对象
方法:
alert()	显示带有一段消息和一个确认按钮的警告框
confirm()  显示带一段消息以及确认按钮和取消按钮的对话框
setInterval() 按照指定的周期(毫秒)来调用函数或计算表达式(循环执行)
setTimeout() 在指定的毫秒数后调用函数或计算表达式(只执行一次)

setTimeout(function(){
	alert("弹出);
},3000);

setInterval(function(){
	alert("弹出);
},3000);

简单定时器案例-灯泡闪烁

<body>
<input type="button" onclick="on()" value="开灯">
<img id="myImage" border="0" src="../imgs/off.gif" style="text-align:center;">
<input type="button" onclick="off()" value="关灯">
<script>
    function on(){
        document.getElementById('myImage').src='../imgs/on.gif';
    }
    function off(){
        document.getElementById('myImage').src='../imgs/off.gif'
    }
    var x = 0;
    // 根据一个变化的数字,产生固定个数的值; 2  x % 2     3   x % 3
    //定时器
    setInterval(function (){
        if(x % 2 == 0){
            on();
        }else {
            off();
        }
        x ++;
    },1000);
</script>
</body>

History对象

获取:使用window.history获取,其中window.可省略
		window.history.方法();
		history.方法();
方法:
back()	加载history列表中的前一个url
forward()	加载history列表中的下一个url

Location对象

获取:使用window.location获取,其中window.可省略
		window.location.方法();
		location.方法();
方法:
href	设置或返回完整的url

DOM(文档对象模型)

在这里插入图片描述

获取Element对象

获取:使用Document对象的方法来获取

<script>
    //1. getElementById:根据id属性值获取,返回一个Element对象
    var img = document.getElementById("light");
    // alert(img);
    img.src = "../imgs/on.gif";

    //2. getElementsByTagName:根据标签名称获取,返回Element对象数组
    var divs = document.getElementsByTagName("div");
    /*
        style:设置元素css样式
        innerHTML:设置元素内容
    */
    for (let i = 0; i < divs.length; i++) {
        //divs[i].style.color = 'red';
        divs[i].innerHTML = "呵呵";
    }

    //3. getElementsByName:根据name属性值获取,返回Element对象数组
    var hobbys = document.getElementsByName("hobby");
    for (let i = 0; i < hobbys.length; i++) {
        //alert(hobbys[i]);
        hobbys[i].checked = true;
    }

    //4. getElementsByClassName:根据class属性值获取,返回Element对象数组
    var clss = document.getElementsByClassName("cls");
    /*for (let i = 0; i < clss.length; i++) {
        alert(clss[i]);

    }*/
</script>

常见HTML Element对象的使用

详情见文档

事件监听

事件:HTML事件发生在HTML元素上的“事情”。
*例如:按钮被点击、鼠标移动到元素之上、按下键盘按键
事件监听:JavaScript可以在事件被侦测到时执行代码。

事件绑定

有两种方式:

一、通过HTML标签中的事件属性进行绑定    
    <input type="button" onclick="on()">
    function on(){
        alert("我被点了");
    }
二、通过DOM元素属性绑定(推荐使用该方式)
	<input type="button" id="btn">
    document.getElementById("btn").onclick = function (){
        alert("我被点了");
    }

常见事件(event代表事件对象)

onload事件:某个页面或图像被完成加载
onblur事件:失去焦点
onfocus事件:获得焦点
onclick事件:单击事件
onkeydown事件:键盘按键被按下
onmouseout事件:鼠标从某元素移开
onmouseover事件:鼠标移到某个元素上
onsubmit事件:表单提交时触发该事件
返回true则表单会被提交,返回false则不会被提交

案例—表单提交

要求:

  • 用户名 6-12位
  • 密码 6-12位
  • 手机号 11位
  • 当输入框失去焦点时,验证输入内容是否符合要求
  • 当点击注册按钮时,判断所有输入框的内容是否都符合要求,如果不符合这阻止表单提交

在这里插入图片描述

body表单页面:

<div class="form-div">
    <div class="reg-content">
        <h1>欢迎注册</h1>
        <span>已有帐号?</span> <a href="#">登录</a>
    </div>
    <form id="reg-form" action="#" method="get">
        <table>
            <tr>
                <td>用户名</td>
                <td class="inputs">
                    <input name="username" type="text" id="username">
                    <br>
                    <span id="username_err" class="err_msg" style="display: none">用户名不太受欢迎</span>
                </td>
            </tr>
            <tr>
                <td>密码</td>
                <td class="inputs">
                    <input name="password" type="password" id="password">
                    <br>
                    <span id="password_err" class="err_msg" style="display: none">密码格式有误</span>
                </td>
            </tr>
            <tr>
                <td>手机号</td>
                <td class="inputs"><input name="tel" type="text" id="tel">
                    <br>
                    <span id="tel_err" class="err_msg" style="display: none">手机号格式有误</span>
                </td>
            </tr>
        </table>
        <div class="buttons">
            <input value="注 册" type="submit" id="reg_btn">
        </div>
        <br class="clear">
    </form>
</div>

body的js代码

<script>
    //1. 验证用户名是否符合规则
    //1.1 获取用户名的输入框
    var usernameInput = document.getElementById("username");

    //1.2 绑定onblur事件 失去焦点
    usernameInput.onblur = checkUsername;

    function checkUsername() {
        //1.3 获取用户输入的用户名
        var username = usernameInput.value.trim();

        //1.4 判断用户名是否符合规则:长度 6~12,单词字符组成
        var reg = /^\w{6,12}$/;
        var flag = reg.test(username);

        //var flag = username.length >= 6 && username.length <= 12;
        if (flag) {
            //符合规则
                     document.getElementById("username_err").style.display = 'none';
        } else {
            //不合符规则
            document.getElementById("username_err").style.display = '';
        }
        return flag;
    }

    //1. 验证密码是否符合规则
    //1.1 获取密码的输入框
    var passwordInput = document.getElementById("password");

    //1.2 绑定onblur事件 失去焦点
    passwordInput.onblur = checkPassword;

    function checkPassword() {
        //1.3 获取用户输入的密码
        var password = passwordInput.value.trim();

        //1.4 判断密 码是否符合规则:长度 6~12
        var reg = /^\w{6,12}$/;
        var flag = reg.test(password);

        //var flag = password.length >= 6 && password.length <= 12;
        if (flag) {
            //符合规则
            document.getElementById("password_err").style.display = 'none';
        } else {
            //不合符规则
            document.getElementById("password_err").style.display = '';
        }

        return flag;
    }


    //1. 验证手机号是否符合规则
    //1.1 获取手机号的输入框
    var telInput = document.getElementById("tel");

    //1.2 绑定onblur事件 失去焦点
    telInput.onblur = checkTel;

    function checkTel() {
        //1.3 获取用户输入的手机号
        var tel = telInput.value.trim();

        //1.4 判断手机号是否符合规则:长度 11,数字组成,第一位是1

        //var flag = tel.length == 11;
        var reg = /^[1]\d{10}$/;
        var flag = reg.test(tel);
        if (flag) {
            //符合规则
            document.getElementById("tel_err").style.display = 'none';
        } else {
            //不合符规则
            document.getElementById("tel_err").style.display = '';
        }

        return flag;
    }


    //1. 获取表单对象
    var regForm = document.getElementById("reg-form");

    //2. 绑定onsubmit 事件
    regForm.onsubmit = function () {
        //挨个判断每一个表单项是否都符合要求,如果有一个不合符,则返回false

        var flag = checkUsername() && checkPassword() && checkTel();

        return flag;
    }
</script>

正则表达式

1、概念:定义了字符串组成的规则
2、定义:
①直接量:注意不要加引号

var reg = /^\w{6,12}$/;

②创建RgeExp对象

var reg = new RegExp("\\w{6,12}$");

3、方法:
test(str):判断指定字符串是否符合规则,返回true或者false
4、语法:

^:表示开始
$:表示结束
[]:代表某个范围内的单个字符,比如:[0-9]单个数字字符
.:代表任意单个字符,除了换行和行结束符
\w:代表单词字符:字母、数字、下划线_、相当于[A-Za-z0-9_]
\d:代表数字字符:相当于[0-9]

量词:
+:至少一个        var reg = /^\w+$/;
*:零个或多个
?:零个或一个
{x}:x个
{m,}:至少m个
{m,n}:至少m个,最多n个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值