Javaweb中JS相关知识

JavaScript

1.什么是JavaScript:

  • JavaScript(简称JS)是一门跨平台、面向对象的脚本语言,是用来控制网页行为的,它能使网页可交互
  • JavaScript和Java是完全不同的语言,不论是概念还是设计。但是基础语法类似
  • JavaScript在1995年由Brendan Eich发明,并于1997年称为ECMA标准
  • ECMAScript6(ES6)是最新的JavaScript版本(发布于2015年)

JS的引入方式

1.内部脚本:将JS代码定义在HTML页面中。注意点:

  • JavaScript代码必须位于<script></script>标签之间
  • 在HTML文档中,可以在任意地方,放置任意数量的<script>
  • 一般会把脚本置于<body>元素的底部,可改善显示速度
<script>
    alert("Hello JavaScript")
</script>

2.外部脚本:将JS代码定义在外部JS文件中,然后引入到HTML页面中。注意点:

  • 外部JS文件中,只包含JS代码,不包含<script>标签
  • <script>标签不能自闭合

demo.js:alert("Hello JavaScript")

引入方式:<script src="js/demo.js"></script>

不能自闭合:<script src="js/demo.js"/> 无效

JS基础语法

1.书写语法:

  • 区分大小写:与Java一样,变量名、函数名以及其它一切东西都是区分大小写的
  • 每行结尾的分号可有可无(建议写上)
  • 注释:与Java一样,单行注释 //注释内容;多行注释 /* 注释内容 */
  • 大括号表示代码块

2.输出语句:

  • 使用window.alert()写入警告框(window可省略)
  • 使用document.write()写入HTML页面输出
  • 使用console.log()写入浏览器控制台
    <script>
        window.alert("hello js");
        document.write("hello js");
        console.log("hello js");
    </script>

3.变量:

  • JavaScript中可用var、let、const关键字(variable的缩写)来声明变量
  • JavaScript是一门弱类型语言,变量可以存放不同类型的值
  • 使用var定义的变量作用域比较大,是全局变量,且可以重复定义
  • let定义的关键字只在所在的代码块内有效,且不允许重复声明
  • const用来声明一个只读的常量,一旦声明,常量的值就不能改变
  • 变量名需要遵循如下规则:

组成字符可以食任何字母、数字、下划线(_)或美元符号($);

数字不能开头;

建议使用驼峰命名。

4.数据类型:JavaScript中分为原始类型(基本数据类型) 和 引用类型:

虽然JavaScript是弱类型语言,但是一样有数据类型。

原始类型:

number:数字(整数、小数、NaN(Not a Number))

string:字符串,小写s,单双引号皆可

boolean:布尔。true,false

null:对象为空

undefined:当声明的变量未初始化时,该变量的默认值是undefined

使用typeof运算符可以获取数据类型,用法:typeof a

5.运算符:

  • 基本上与Java一致,只有===不一样,==会进行类型转换,===不会进行类型转换

 6.类型转换:

  • 字符串类型转为数字:使用parseInt(number)将字符串字面值转为数字。如果字面值不是数字,则转为NaN。比如"12"可以转为12,"12A12"可转为12,"A12"转为NaN
  • 其他类型转为boolean:Number 0 和 NaN 为false,其它均转为true;String:空字符串为false,其它均转为true;Null 和 undefined :均转为false

JS的函数

1.函数(方法)是被设计为执行特定任务的代码块,相当于Java中的方法。

2.定义:

JavaScript函数通过function关键字进行定义,有两种定义方法:

方法一:

function functionName(参数1.参数2...){

        // 要执行的代码

}

方法二:

var functionName = function(参数1,参数2..){

        //要执行的代码

}

注意点:

1)形参不需要类型,因为JavaScript是弱类型语言

2)返回行也不需要定义类型,可以在函数内部直接使用return返回即可

调用:函数名称(实际参数列表)

3)在调用函数时(通过函数名调用)可以传任意个参数,但是只会接收对应形参的个数

JS对象

1.Array:

JavaScript中Array对象用于定义数组。

定义:

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

方法二:var 变量名 = [元素列表]; 例:var arr = [1,2,3,4];

访问:

arr[索引] = 值; 例:arr[10] = "hello";  

特点:长度可变,类型可变(可以直接越过数组长度赋值,比如说上面的arr长度为4,但是可以 arr[6] = "abc";这个arr[6]是合法的,正常使用,但是arr[4]和arr[5]仍是undefined);

  • 属性:
属性说明
length设置或返回数组中元素的数量
  • 方法:
方法说明
forEach()遍历数组中的每个有值的元素,并调用一次传入的函数(传入的参数为一个函数,该函数可以不起名字)
push()将新元素添加到数组的末尾(可添加多个),并返回新的长度
splice()从数组中删除元素(第一个参数为开始索引,第二个参数为删除个数)
    // forEach遍历    
    <script>
        var arr = [1,2,3,4];
        arr.forEach(function(e){
            console.log(e);
        })
    </script>
    // 或者省略掉function也可以,使用箭头函数(...) => {...}
     <script>
        var arr = [1,2,3,4];
        arr.forEach((e) => {
            console.log(e);
        })
    </script>   
    // 输出1 2 3 4

2.String:

几个方法跟Java中使用一致

 3.JSON:

先介绍一下JavaScript中自定义对象:

定义格式:

var 对象名 = {

        属性名1:属性值1,

        属性名2:属性值2,

        属性名3:属性值3,

        函数名称:function(形参列表){}

}

函数可以简化为:函数名称(形参列表){}

调用格式:

对象名.属性名;

对象名.函数名();

JSON介绍:

概念:JavaScript Object Notation,JavaScript对象标记法。JSON是通过JavaScript对象标记法书写的文本。由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输。

JSON的定义:得先用单引号引起来,其它基本和对象一致,只是将JavaScript中的对象中的属性名全都用双引号引起来了。比如:

JS对象:

var student = {

        name:"Tom",

        age:20

};

JSON(不能换行):

var jsonstr = '{"name":"Tom","age":20}';

但是对于属性值其实也不是没有要求,要求如下:

  • JSON对象不能像JS自定义对象那样调用属性值,需要先把JSON转为JS对象,同时JS对象也可以转为JSON字符串,使用的是JSON对象的方法:
方法名说明
JSON.parse(JSON字符串)将JSON字符串转化为JS对象,返回一个JS对象
JSON.stringify(JS对象)将JS对象转为JSON字符串,返回一个JSON字符串
    <script>
        var object = {
            name:"Tom",
            age:20
        };
        var jsonstr = '{ "name":"Tom", "age":20}';
        console.log(jsonstr.name);// 控制台输出undefined
        console.log(JSON.parse(jsonstr).name);// 控制台输出Tom
        console.log(JSON.stringify(object));// 控制台输出{"name":"Tom","age":20}
    </script>

4.BOM(Browser Object Model):

  • 浏览器对象模型,允许JavaScript与浏览器对话,JavaScript将浏览器的各个组成部分封装为对象
  • 组成:Window,浏览器窗口对象;Navigator:浏览器对象;Screen:屏幕对象;History:历史记录对象;Location:地址栏对象

作为Java程序员,先主要了解Window和Location对象。

Window(浏览器窗口对象):

获取:直接使用window,其中window.可省略。比如window.alert()可以写成alert.()

属性:

1)history:获取History对象,对History对象的只读使用 ,具体参阅History对象;

2)location:获取Location对象,用于窗口或框架的Location对象,具体参阅Location对象;

3)navigator:获取Navigator对象,对Navigator对象的只读引用,具体参阅Navigator对象。

方法:

1)alert():显示带有一段消息和一个确认按钮的警告框,传入对话框中显示的字符串;

2)confirm():显示带有一段消息以及确认按钮和取消按钮的对话框,传入对话框中显示的字符串,返回用户的选择,确认是true,取消是false;

3)setlnterval:按照指定的周期(以毫秒算)来调用函数或计算表达式,需要传入一个函数以及间隔的周期,在每个间隔周期执行一次该函数;

4)setTimeout():在指定的毫秒数后调用函数或计算表达式,需要传入一个函数以及延迟时间,在延迟时间后执行一次该函数。

Location(地址栏对象):

获取:使用window.location获取,其中window.可以省略。

比如:window.location.属性;  location.属性;

属性:href:设置或返回完整的URL,如果是设置了URL,则会跳转到对应的网页中。

5.DOM(Document Object Model  文档对象模型):

  • DOM是W3C的标准,定义了访问HTML和XML文档的标准,分为3个不同的部分
  • 第一部分:Core DOM -  所有文档类型的标准模型
  • 第二部分:XML DOM -XML文档的标准模型
  • 第三部分:HTML DOM - HTML文档的标准模型
  • 将标记语言的各个部分封装为对应的对象, 所有文档类型的标准模型:Document,整个文档对象;Element,元素对象;Attribute,属性对象;Text:文本对象;Comment,注释对象

JavaScript通过DOM,就能对HTML进行操作:

1)改变HTML元素的内容;

2)改变HTML元素的样式(CSS);

3)对HTML DOM事件作出反应;

4)添加和删除HTML元素。

获取元素对象Element:

HTML中的Element对象可以通过Document对象获取,而Document对象是通过window

对象获取的。

Document对象中提供了以下获取Element元素对象的函数:

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

var h1 = document.getElementById('elementID');

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

var divs  = document.getElementsByTagName('div');

3)根据name属性值获取,返回Element数组

var hobbys =  document.getElementsByName('hobby');

4)根据class属性值获取,返回Element对象数组

var class  = document.getElementsByClassName('cls');

获取到对应的元素对象之后,每一个元素对象都有很多的方法和属性,可以参考官方文档去改变该元素对象的文本内容或者其它的属性等。

    <img src="img/off.gif" id="image"><br><br>
    <div>船只教育</div><br>
    <div>黑马程序员</div><br>
    <label><input type="checkbox" name="hobby">电影</label>
    <label><input type="checkbox" name="hobby">旅游</label>
    <label><input type="checkbox" name="hobby">游戏</label>

    <script>
        // 通过Id获取元素,要注意这里的d是小写的
        var image = document.getElementById('image');
        // 设置属性值,或者可以通过image.src = "img/on.gif";
        image.setAttribute("src","img/on.gif");
        // 通过标签名来获取元素,获取到的是一个数组
        var divs = document.getElementsByTagName('div');
        for (let index = 0; index < divs.length; index++) {
            const element = divs[index];
            // 通过div的innerHTML属性增加文本内容
            element.innerHTML += "<font color='red'> very good</font>";
        }
        // 通过name属性获取元素,获取到的是一个数组
        var labels = document.getElementsByName('hobby');
        for (let index = 0; index < labels.length; index++) {
            const element = labels[index];
            // 通过input对象的checked属性来改变是否选中
            element.checked = true;
        }
    </script>

事件监听

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

  • 按钮被点击
  • 鼠标移动到元素上
  • 按下键盘按键

2.事件监听:JavaScript可以在事件被侦测到时执行代码。

3.事件绑定:

方式一:通过HTML标签中的时间属性进行绑定,当按钮被点击时调用JS中同名函数

<input type="button" οnclick="on()" value="按钮1">

<script>

        function on(){

                alert('我被点击了');                

        }

</script>

方式二:通过DOM元素属性绑定,当按钮被点击时调用JS中同名函数

<input type="button" id="btn" value="按钮2">

<script>

        document.getElementById('btn').οnclick=function(){

                alert('我被点击了'); 

        }

</script>

常见事件

 Vue

1.Vue时一套前端框架,免除原生JavaScript中的DOM操作,简化书写。

2.基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。

3.官网:https://v2.cn.vuejs.org/

4.使用Vue的几个步骤:

  • 新建HTML页面,引入Vue.js文件
  • 在JS代码区域,创建Vue核心对象,定义数据模型
  • 编写示图
    <!-- 1.引入vue.js -->
    <script src="js/vue.js"></script>
</head>
<body>
    <!-- 3.编写视图 -->
    <div id="app">
        <!-- v-model是引用data中的message内容的指令 -->
        <input type="text" v-model="message">
        <!-- 插值表达式,格式:{{表达式}},内容可以是变量、三元运算符、函数调用、算术运算 -->
        {{message}}
    </div>
</body>
<script>
    // 2.创建Vue核心对象
    new Vue({
        // Vue管理区域
        el:"#app",
        // 数据管理区域,注意不要写成了data方法
        data:{
            message:"Hello Vue"
        }
    })
</script>

Vue常用指令

1.指令:HTML标签上带有v- 前缀的特殊属性,不同指令具有不同含义。例如:v-if,v-for...

2.常用指令: 

  • 通过v-bind或者v-model绑定的变量,必须在数据模型中声明
  • v-for只需要在需要循环写出的同一个标签中写即可,比如说表格标签中有四行,直接在第一个<tr>标签中写v-for即可

    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <!-- v-bind -->
        <a v-bind:href="url">链接1</a>
        <!-- 可省略v-bind -->
        <a :href="url">链接2</a>
        <!-- v-model -->
        <input type="text" name="text" v-model="url">
        <!-- v-on -->
        <input type="button" value="点击" v-on:click="handle()">
        <!-- 可省略v-on:,直接用@代替 -->
        <!-- 可绑定其它事件,把click换掉 -->
        <input type="button" value="你再点" @click="handle()">
        <br><br>
        <!-- v-if、v-else-if、v-else -->
        <span v-if="age <=  35">年轻人</span>
        <span v-else-if="age > 35 && age < 60">中年人</span>
        <span v-else>老年人</span>
        <!-- v-show -->
        <span v-show="age <= 35">年轻人</span>
        <input type="text" name="age" v-model="age">
        <!-- v-for -->
        <div v-for="addr in addrs">{{addr}}</div>
        <div v-for="(addr, index) in addrs" > {{index + 1}} : {{addr}} </div>
    </div>
</body>
<script>
    new Vue({
        el:"#app",
        data:{
            url:"https://www.baidu.com",
            age:20,
            addrs:['上海','北京','广州','深圳','成都','杭州']
        },
        methods: {
            handle:function(){
                alert("你点了我一下...");
            }
        }
    })
</script>

Vue生命周期

1.生命周期:指一个对象从创建到销毁的整个过程。

2.生命周期的八个阶段:每除法一个生命周期事件,会自动执行一个生命周期方法(钩子)。

3.主要是要掌握mounted。mounted:挂载完成,Vue初始化成果,HTML页面渲染成功(发送请求到服务端,加载数据)。可以直接在Vue对象里面写一个mounted方法,执行对应的任务。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值