第七篇:复习JavaScript

一、什么是JavaScript

JavaScript简介:

JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。

  • JavaScript 是脚本语言
  • JavaScript 是一种轻量级的编程语言。
  • JavaScript 是可插入 HTML 页面的编程代码。
  • JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。
  • JavaScript 很容易学习。

二、JS基础

1. JS引入方式

<script>
alert("Hello JavaScript");
</script>

浏览器会解释并执行位于<script>和</script>之间的JS代码

1.1 内部脚本

内部脚本:

  • 将JS代码定义在HTML中
  • Javascript 脚本代码必须位于 <script> 与 </script> 标签之间。
  • 在HTML文档中,可以在任意地方,放置任意数量的<script>
  • 一般会放置在<body>元素的底部,可改善显示速度

<script>标签:
如果需要在HTML页面插入JavaScript,需要用<script>标签,因为<script>标签会告诉JavaScript在何处开始和结束,并且之间的代码行包含了JavaScript

1.2 外部脚本

外部脚本:

  • 将JS代码定义在外部JS文件中,然和引入到HTML页面内
  • 外部JS文件中,只包含JS代码,不包含<script>标签
  • <script>标签不能自闭和,如果自闭和了,引入的JS文件也会失效

外部JS文件,例如:

alert("Hello JavaScript")

引用JS文件,例如:

<script src = "js/demo.js"></scrpit>

2. JS基础语法

2.1 书写语法

  • 区分大小写: 与Java一样,变量名,函数名以及其他的一切都是区分大小写的
  • 每行的结尾分号可有可无
  • 注释:
    • 单行注释:// 注释内容
    • 多行注释:/*注释内容*/
  • 大括号表示代码块
if(count == 3){
	alert(count)
}

2.2 输出语句

  • 使用window.alert() 写入警告框 (window.)可以省略
  • 使用document.write() 写入HTML输出
  • 使用console.log() 写入浏览器控制台

例如:

<script>
	window.alert("hello alert")	// 浏览器弹出警告框

	document.write("hello write") // 写入HTML在浏览器展示

	console.log("hello log") // 写入浏览器控制台
</script>

效果如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.3 变量

  • JS用var关键字来声明变量
  • js是一个弱类型语言,变量可以存放不同类型的值
  • 变量名需要遵循以下规则
    • 组成字符可以是任何字母,数字,下划线_,或者美元符号$
    • 数字不能开头
    • 建议使用驼峰命名
// var定义变量
var a = 20;
a = "张三";

alert(a)
//结果为 张三(因为后面的值把前面的覆盖掉了):

使用 var 定义变量有两个特点

  1. 作用域比较大,全局变量
  2. 可以重复定义一个变量
{
       var x = 1;
       var x = "A";
   }
   alert(x)
   // 也可以输出 A

注意:

  • ECMAScript6 新增了let来定义变量,类似var但是声明的变量只在代码块内有效
  • 新增了const来声明一个只读对的常量,不能改变

下面用两个例子来解释:

{
	// let 局部变量
    let x = 1;
  }
  	alert(x)
  // 得不到 1
// const 常量:不能被改变
const pi = 3.14;
pi = 3.15   // 控制台会报错
alert (pi)

2.4 数据类型

Javascript中分为:原始类型和引用类型

  • number 数字(整数,小数,NaN(not a number) )
  • string 字符串 单双引号
  • Boolean 布尔 true或者false
  • null 空
  • undefined 变量未初始化时,该变量默认值时undefined
  • 使用 typeof运算符可以获取数据类型
alert(typeof 3)     //number
alert(typeof 3.14)

alert(typeof "A")   //string
alert(typeof 'hello')

alert(typeof true)  //boolean
alert(typeof false)

alert(typeof null)  //object    

var a ;
alert(typeof a)     //undefined

2.5 运算符

基础运算符都一致:

  • 算数运算符:+,-,*,/,%,++,–
  • 赋值运算符: =,+=,-=,*=,/=,%=
  • 比较运算符: >,<,>=,<=,!=,==,===
  • 逻辑运算符:&&,||,!
  • 三元运算符: 条件表达式? true_value :false_value

== 比较时会进行类型转换
=== 不会将进行类型转换

  var a = 10;
    alert(a == '10') // true
    alert(a === '10') //false
    alert(a === 10) //true 

类型转换
将字符串的面值转换成数字:

  • 如果不是数字,则转为NaN
    alert(parseInt('12')) // 12 
    alert(parseInt('12A45')) // 12 转换到字母停下
    alert(parseInt('A45'))  //NaN

其他类型转boolean:

  • number:0和NaN为false 其他未true
  • string:空字符串为false,其他为true
  • null和undefined:均转为false
    if(0){	// false 
        alert('0转换为false')
    }
    if(NaN){ // false 
        alert('NaN转换为false')
    }
    if(-1){	// true
        alert('除0和NaN其他数字都是true')
    }
    if(""){	// false 
		alert('空字符串为false 其他都是true')
	}
	ifnull{ // false
		alert('null 转换为false')
	}
	if(underfined){ // false
		alert('underfined 转化为false')
	}

2.6 流程控制语句

和Java一致

  • if else
  • switch
  • for
  • while
  • do…while

三、JS-函数

  • 介绍:函数(方法)时被设计为执行特定任务的代码块

  • 定义:JavaScript函数通过function关键字进行定义

       function 名字 ( 参数1 参数2 ...){
               // 代码块
           }
    
    
  • 注意

    • 形式参数不需要类型,因为JavaScript是弱类型语言
    • 返回值也不需要定义类型,可以在函数内部直接用return返回
  • 调用:函数名称(实际参数列表)

实例(定义):

// 函数定义方法一
function add(a,b){
	return a + b
	}

// 函数定义方法二
var add = function(a,b){
   	return a + b
 	}

实例(调用):

var result = add(10,20)
    alert(result)

注意:JS中,函数调用可以传递任意个数的参数

四、JS-对象

1. Array 数组

  • JavaScript中Array用于定义数组

Array定义:

var 变量名 = new Array(元素列表) // 方法1
var arr = new Array(1,2,3,4)

var 变量名 = [元素列表] // 方法2
var arr = [1,2,3,4]

访问:

arr[索引] = 值;
arr[10] = ‘hello’

  • 类似于Java中的集合
    • 长度可变
    • 类型可变
    var arr = [1,2,3,4,5];
    arr[10] = 50;
    arr[9] = "A";
    arr[8] = true
    alert(arr[10])	// 50
    console.log(arr[9])  // A 
    console.log(arr[8])	// true
	console.log(arr[7]) // underfined

array中的常见属性和方法
属性:

属性描述
length设置或者返回数组中的元素数据

方法:

方法描述
forEach()遍历数组中的每个有值的元素,并调用一次传入的函数
push()将新元素添加到数组末尾,返还新的长度
splice()从数组中删除

实例:

var arr = [1,2,3,4];
// forEach 遍历输出(仅仅遍历有值的元素)如果想要全部遍历,使用for循环
arr.forEach(function(e){
 console.log(e);
})
// ES6 箭头函数:(...) => (...)
arr.forEach((e) => {
 console.log(e);
})

// push 添加元素到数组末尾
 arr.push(7,8,9)
 console.log(arr)

// splice 删除   两个元素    第一个从哪里开始删,第二个删几个
 arr.splice(2,2) //  从下标2开始删(包括2,删两个)
 console.log(arr)    

运行结果如下:
在这里插入图片描述

2. String 字符串

字符串对象的创建方式有两种:

var 变量名 = new String(“…”) // 方法一
var str = new String(“hello String”)

var 变量名 = " " // 方法二
var str = “hello String”

String中的常见属性和方法
属性:

属性描述
length字符串的长度

方法:

方法描述
charAt()返回在指定位置的字符
indexOf()检索字符串
trim()去除字符串两边的空格
substring()提取字符串中两个指定的索引号之间的字符

例如:

  var str = "  hello String  "
    console.log(str)
    
    // length 字符串的长度
    console.log(str.length)   
    
    // charAt 返回在指定位置的字符
    console.log(str.charAt(4))
    
    // indexOf 检索字符串
    console.log(str.indexOf("lo"))
    
    // trim 去除字符串两边的空格
    var a = str.trim()
    console.log(a)
    
    // substring 提取字符串中两个指定的索引号之间的字符
    console.log(a.substring(0,5)) // 含头不含尾

运行结果如下:
在这里插入图片描述

3.JSON JS对象

自定义对象:
定义格式:

// 格式
var 对象名 = {
     属性1 : 属性值1 
     属性2 : 属性值2 
     函数名称: function(形参){ // 冒号和function可以省略
         代码块
     }
 }
// 例子
var user = {
    name : "tom"
    age : 20
    gender : "male"
    eat (){
        console.log("吃饭")
    }
}

调用格式:

对象名.属性名       console.log(user.name)
对象名.函数名()     user.eat()

JSON介绍

  • 概念:Javascript Object Notation,Javascript对象标记法
  • JSON是通过Javascript对象标记法书写的文本
  • 由于语法简单,层次结构鲜明,现多用于作为数据载体,在网络上进行数据传输
{
	"name" : "XiaoJian"
	"age" : "19"
	"gender" : ""male
};

JSON定义:

// 格式
var 变量名 = '{"key1":value1, "key2":value2}';
// 例子
var jsonstr = '{"name" : "tom" , "age" : 18 , "address" : ["北京","上海","西安"]}';

value的数据类型为:

  • 数字:(整数或者浮点数) 直接使用
  • 字符串: “需要在双引号中”
  • 逻辑值: 写True或者False
  • 数组:[ 在方括号中 ]
  • 对象:在花括号中

JSON字符串转化为JS对象

var jsObject = JSON.parse(jsonstr);
// 转化为JS对象之后,打点可以得到对应的值
alert(jsObject.name)

JS对象转化为JSON字符串

var jsonstr = JSON.stringify(jsObject)

4. BOM 浏览器对象模型

概念:Browser Object Model 浏览器对象模型,允许Javascript与浏览器对话,Javascript将整个浏览器的各个组成部分封装为对象

组成:

  • Window:浏览器窗口对象
  • Navigator:浏览器对象(版本 内核)
  • Screen:屏幕对象
  • History:历史记录对象
  • Location:地址栏对象

4.1 Window

Window 浏览器窗口对象 Window.可以调用其他属性和方法

例如window.history()

window.alert("Hello Window");
alert("Hello Window")
// 两者效果一样
// window. 可以省略
属性描述
history历史记录对象
location地址栏对象
navigator获取浏览器对象
方法描述
alert()显示带有一段消息和一个确认按钮的警告框
confirm()显示带有一段消息,一个确认按钮以及取消按钮的对话框
setInterval()按照指定的周期来调用函数或计算表达式 每隔多长时间
setTimeout()在指定的毫秒数之后调用函数或计算表达式 隔多长时间

操作实例:

// 	  alert 弹出警告框
   window.alert("hello BOM")
   alert("hello BOM Window")


 //   confirm   有返回值的
    var flag = confirm("hello BOM Confirm")
    alert(flag)


//    setInterval 定时器,周期性的执行某一个函数 
    var i = 0
    setInterval(function(){
            i++;
            console.log("定时器执行了"+i+"次")
    },2000) // 2000指的是 2 秒 , 1000是一秒


//    setTimeout 定时器 延迟指定时间执行一次
    setTimeout(function(){
        console.log("嘿嘿")
    },3000)


    // 地址栏对象 使用window.location获取 Window可以省略
    // href 设置或返回完整的url地址
    var result = confirm("是否要跳转百度");
    if (result == true){
        location.href = "https://www.baidu.com"
    }
    else{
        alert("切,爱去不去")
    }
    // 直接跳转到输入的路径地址

5. DOM 文档对象模型

概念:Document Object Model ,文档对象模型

  • 将标记语言的各个组成部分封装为对应的对象:
    • Document 整个文档对象
    • Element 元素对象
    • Attribute 属性对象
    • Text 文本对象
    • Comment 注释对象
      当HTML被浏览器加载和解析之后,就会封装成以上五种对象,也会生成一个DOM树

例如:
在这里插入图片描述
Javascript通过DOM,就可以对HTML进 行操作

  1. 改变HTML元素
  2. 改变HTML元素样式(css)
  3. 对HTML DOM事件作出反应
  4. 添加和删除HTML元素

Document Object Model,文档对象模型
将标记语言的各个组成部分封装为相应的对象
1.Core DOM 所有文档类型的标准模型

  • Document 整个文档对象
  • Element 元素对象
  • Attribute 属性对象
  • Text 文本对象
  • Comment 注释对象

2.XML DOM - XML 文档的标准模型

3.HTML DOM - HTML 文档的标准模型

  • Image <img>
  • Button <input type = “button”>

在DOM中如何获取Element元素对象?
HTML中的Element对象可以通过Document对象获取,而Document对象是通过window对象获取的

Document对象中提供了Element元素对象的函数:

1.根据id属性获取,返回单个Element对象

var h1 = document.getElementById("h1")

2.根据标签名获取,返回Element对象 数组

var divs = document.getElementsByTagName("div")

3.根据name属性获取,返回ELement对象 数组

var names = document.getElementsByName("name")

4.根据class属性获取,返回ELement对象 数组

var class = document.getElementsByClassName("className")

操作实例:


<html>
    <head>
        <title>JS-对象-DOM</title>
    </head>
    <body>
        <img id="img" src="./img/off.png" ><br><br>

        <div class="cls">职业技术学院</div><br>
        <div class="cls">大数据十班</div><br>

        <input type="checkbox" name="hobby">电影
        <input type="checkbox" name="hobby">旅游
        <input type="checkbox" name="hobby">游戏
    </body>

    <script>
        // 1.获取Element元素
        // 1.1获取元素-根据ID获取
        var img = document.getElementById("img")
        alert(img)
        console.log(img)

        // 1.2获取元素-根据标签获取
        var divs = document.getElementsByTagName("div")
        for (let i = 0; i < divs.length; i++) {
            alert(divs[i])
            console.log(divs[i])
        }

        // 1.3获取元素-根据name获取
        var names = document.getElementsByName("hobby")
        for (let i = 0; i < names.length; i++) {
            alert(names[i])
            console.log(names[i])
        }

        // 1.4获取元素-根据class获取
        var classes = document.getElementsByClassName("cls")
        for (let i = 0; i < classes.length; i++) {
            alert(classes[i])
            console.log(classes[i])
        }
    </script>
</html>

获得到元素之后,参考手册,属性方法

手册地址如下:https://www.runoob.com/jsref/dom-obj-document.html

五、JS-事件监听

事件:HTML事件是指发生在HTML元素上的”事情“。比如:

  • 按钮被点击
  • 鼠标移动到元素上
  • 按下键盘按键
    事件监听:JavaScript可以在事件被侦测是执行代码

1. 事件绑定

方式一: 通过HTML标签中的事件属性进行绑定

<input type="button" onclick="on()" value="按钮1">
<script>
	  function on(){
	      alert("我被点击了!")
	  }
</script>

方式二:通过DOM元素进行绑定

<input type="button" id="btn" value="按钮2">
<script>
    document.fetElementById("btn").onclick=function(){
        alert("我被点击了!")
    }
</script>

2. 常见事件

事件名说明
onclick鼠标单击事件
onblur元素失去焦点
onfocus元素获得焦点
onload莫个页面或者图像被完成加载
onsubmit当表单被提交时触发该页面
onkeydown某个键盘的键被按下时
onmouseover鼠标被移到某元素之上
onmouseout鼠标从某元素移开

下面请看一段代码实例:

<html>
    <head>
        <title>常见事件</title>
    </head>
<body onload="load()">
        <form action="" style="text-align: center;" onsubmit="subfn()">
            <input type="text" name="username"  placeholder="请输入姓名" onblur="bfn()" onfocus="ffn()" onkeydown="kfn()">
            
            <input type="password" name="password" placeholder="请输入密码" onblur="bfn()" onfocus="ffn()" onkeydown="kfn()">

            <input type="submit" id="b1" value="提交">

            <input type="button" id="b1" value="单击事件" onclick="fn1()">
         
        </form>
        <br><br><br>

        <table width="800px" border="1" cellspacing="0" align="center" onmouseover="over()" onmouseout="out()">
            <tr>
                <th>学号</th>
                <th>姓名</th>
                <th>分数</th>
                <th>评语</th>
            </tr>
            <tr align="center">
                <td>001</td>
                <td>张三</td>
                <td>90</td>
                <td>嘿嘿</td>

            </tr>
            <tr align="center">
                <td>002</td>
                <td>天天</td>
                <td>150</td>
                <td>真牛逼</td>
            </tr>
        </table>
    </body>
    <script>
        // onload 页面/元素加载完后触发
        function load(){
            console.log("页面加载完成...")
        }

        // onclick 鼠标点击事件
        function fn1(){
            console.log("我被点击了...")
        }
        
        // onblur 失去焦点事件
        function bfn(){
            console.log("失去焦点...")
        }

        // onfocus 获得焦点事件
        function ffn(){
            console.log("获取焦点...")
        }

        // onkeydown 某个键盘被按下
        function kfn(){
            console.log("键盘被按下...")
        }

        // onmouseover 鼠标移动到元素上
        function over(){
            console.log("鼠标移入了...")
        }
        
        // onmouseout 鼠标移除某元素
        function out(){
            console.log("鼠标移出了...")
        }

        // onsubmit 提交表单事件
        function subfn(){
            console.log("表单提交成功")
        }
    </script>
</html>

HTML页面效果如下:
在这里插入图片描述
执行效果:
在这里插入图片描述

六、小结

写本文主要是为了分享我的学习过程,也是给自己记个笔记,哪里忘记了,回来再看一眼,也可以很快的回想起来

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值