Javaweb:2.JavaScript

目录

1.JS引入方式

2.JS基础语法

(1)输出语句

(2)变量

3.数据类型,运算符,流程控制语句

4.算术符

5.函数

6.JS对象

(1)Array

(2)String

7.js自定义对象

8.JSON

9.BOM

(1)Window

(2)Location

10.DOM

11.Js事件监听

12案例

1.JS引入方式

(1)内部脚本:将JS代码定义在HTML页面中 JavaScript代码必须位于<script></script>标签之间

在HTML文档中,可以在任意地方,放置任意数量的<script>

一般会把脚本置于<body>元素的底部,可改善显示速度

(2)外部脚本:将 JS代码定义在外部 JS文件中,然后引入到 HTML页面中

外部JS文件中,只包含JS代码,不包含<script>标签             <script src="...."></script>     alert("Hello JavaScript")

<script>标签不能自闭合

2.JS基础语法

书写语法:区分大小写:与 Java 一样,变量名、函数名以及其他一切东西都是区分大小写的

每行结尾的分号可有可无

注释: 单行注释:// 注释内容

多行注释:/* 注释内容 */ 大括号表示代码块

(1)输出语句

使用 window.alert() 写入警告框

使用 document.write() 写入 HTML 输出

使用 console.log() 写入浏览器控制台

(2)变量

JavaScript 中用 var 关键字(variable 的缩写)来声明变量 。  var a = 20;   a = "张三";

特点1:作用域比较大,全局变量

特点2:可以重复定义的

JavaScript 是一门弱类型语言,变量可以存放不同类型的值

变量名需要遵循如下规则: 组成字符可以是任何字母、数字、下划线(_)或美元符号($)

数字不能开头

建议使用驼峰命名

注意:ECMAScript 6 新增了 let 关键字来定义变量。声明变量,块级作用域。它的用法类似于 var,但是所声明的变量,只在 let 关键字所在的代码块内有效,且不允许重复声明。

ECMAScript 6 新增了 const 关键字,用来声明一个只读的常量。一旦声明,常量的值就不能改变。

3.数据类型,运算符,流程控制语句

JavaScript中分为:原始类型 和 引用类型。

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

string:字符串,单双引皆可  

boolean:布尔。true,false

null:对象为空  

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

使用 typeof 运算符可以获取数据类型         var a = 20;   alert(typeof  a);

4.算术符

 算术运算符:+ , - , * , / , % , ++ , --  

赋值运算符:= , += , -= , *= , /= , %=  

比较运算符:> , < , >= , <= , != , == , ===(全等)  

== 会进行类型转换,=== 不会进行类型转换

字符串类型转为数字: 将字符串字面值转为数字。 如果字面值不是数字,则转为NaN。

                                     alert(parseInt("12“));        //12

                                      alert(parseInt("12A45“));  //12

                                       alert(parseInt("A45“)) ;   //NaN

其他类型转为boolean: Number:0 和 NaN为false,其他均转为true。

                                      if(0) {  //false

                                     alert("0"转换为false);

                                      String:空字符串为false,其他均转为true。

                                      Null 和 undefined :均转为false。

逻辑运算符:&& , || , !  

三元运算符:条件表达式 ? true_value: false_value

5.函数

函数(方法)是被设计为执行特定任务的代码块。

JavaScript 函数通过 function 关键字进行定义,语法为:  //方可省

function functionName(参数1,参数2..){     //要执行的代码 }

定义:                                                                        方式二:

function add(a , b){                                                                  var add = function(a , b){

return a + b;                                                                             return a + b;

}                                                                                                } 

调用:

var result = add(10,20);                                                         

alert(result)                                                          

注意: 形式参数不需要类型。因为JavaScript是弱类型语言

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

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

6.JS对象

(1)Array

是js中Array对象用于定义数组。 特点:长度,类型可变

2.定义

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

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

访问

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

  //forEach: 遍历数组中有值的元素
    // 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);
    console.log(arr);

(2)String

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

var 变量名 = new String("…") ; //方式一

var 变量名 = "…" ; //方式二          var str = "Hello String";

 //创建字符串对象
    //var str = new String("Hello String");
    var str = "  Hello String    ";

    console.log(str);   //Hello String
 
    //length
    console.log(str.length);   //12

    //charAt
    console.log(str.charAt(4));  //0

    //indexOf
    console.log(str.indexOf("lo"));  //3

    //trim             去除字符串左右两侧空格
    var s = str.trim();
    console.log(s);

    //substring(start,end) --- 开始索引, 结束索引 (含头不含尾)
    console.log(s.substring(0,5));  Hello

7.js自定义对象

定义格式:                                       

var 对象名 = {                                             

属性名1: 属性值1,                                      

属性名2: 属性值2,

属性名3: 属性值3,

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

       alert();

     }

};

调用格式:

 对象名.属性名;    alert(user.name); 

 对象名.函数名();   user.eat();

8.JSON

是通过JS对象标记法书写的文本,先多用于数据载体

{    

"name":"Tom",  

 "age":20,    

"gender":"male"

}

1.定义 

var 变量名 = ‘{}’

value 的数据类型为:

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true 或 false)

数组(在方括号中)

对象(在花括号中)

null

2.JSON字符串转为JS对象

var jsObject = JSON.parse(userStr);

JS对象转为JSON字符串

var jsonStr = JSON.stringify(jsObject);

    //定义json
    var jsonstr = '{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}';
    alert(jsonstr.name);   //undefined

    //json字符串--js对象
    var obj = JSON.parse(jsonstr);
    alert(obj.name);        //Tom

    //js对象--json字符串
    alert(JSON.stringify(obj));    //"name":"Tom", "age":18, "addr":["北京","上海","西安"

9.BOM

浏览器对象模型

(1)Window

介绍:浏览器窗口对象。

获取:直接使用window,其中 window. 可以省略。  window.alert("Hello Window");

属性  

history:对 History 对象的只读引用。

 location:用于窗口或框架的 Location 对象。

 navigator:对 Navigator 对象的只读引用。

方法  

alert():显示带有一段消息和一个确认按钮的警告框。  

confirm():显示带有一段消息以及确认按钮和取消按钮的对话框。

 setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式。

 setTimeout():在指定的毫秒数后调用函数或计算表达式。

    //获取
     window.alert("Hello BOM");
     alert("Hello BOM Window");

    //方法
    //confirm - 对话框 -- 确认: true , 取消: false
     var flag = confirm("您确认删除该记录吗?");
     alert(flag);

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

    //定时器 - setTimeout -- 延迟指定时间执行一次 
     setTimeout(function(){
         alert("JS");
     },3000);

(2)Location

介绍:地址栏对象。

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

location.属性;

属性: href:设置或返回完整的URL。        location.href = "..";

alert(location.href);

location.href = "..."

10.DOM

文档对象模型

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 hobbys = document.getElementsByName('hobby');

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

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

//1. 获取Element元素

    //1.1 获取元素-根据ID获取
     var img = document.getElementById('h1');
     alert(img);

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


    //1.3 获取元素-根据name属性获取
     var ins = document.getElementsByName('hobby');
     for (let i = 0; i < ins.length; i++) {
         alert(ins[i]);
    }


    //1.4 获取元素-根据class属性获取
    var divs = document.getElementsByClassName('cls');
     for (let i = 0; i < divs.length; i++) {
         alert(divs[i]);
     }



    //2. 查询参考手册, 属性、方法
    var divs = document.getElementsByClassName('cls');
    var div1 = divs[0];
    
    div1.innerHTML = "传智教育666";  //返回内容,修改

案例

<body>
    <img id="h1" src="img/off.gif">  <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. 点亮灯泡 : src 属性值
    var img = document.getElementById('h1');
    img.src = "img/on.gif";  修改img属性


    //2. 将所有div标签的内容后面加上: very good (红色字体) -- <font color='red'></font>
    var divs = document.getElementsByTagName('div');
    for (let i = 0; i < divs.length; i++) {
        const div = divs[i];
        div.innerHTML += "<font color='red'>very good</font>"; 
    }


    //3. 使所有的复选框呈现选中状态
    var ins = document.getElementsByName('hobby');
    for (let i = 0; i < ins.length; i++) {
        const check = ins[i];
        check.checked = true;//选中
    }

</script>

11.Js事件监听

可以在事件被侦测到时 执行代码

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

<body>
    <input type="button" id="btn1" value="事件绑定1" onclick="on()">
    <input type="button" id="btn2" value="事件绑定2">
</body>

<script>
    function on(){
        alert("按钮1被点击了...");
    }
</script>

方式二:通过 DOM 元素属性绑定

  document.getElementById('btn2').onclick = function(){
        alert("按钮2被点击了...");
    }

(1)常见事件

事件名

说明

onclick

鼠标单击事件

onblur

元素失去焦点

onfocus

元素获得焦点

onload

某个页面或图像被完成加载

onsubmit

当表单提交时触发该事件

onkeydown

某个键盘的键被按下

onmouseover

鼠标被移到某元素之上

onmouseout

鼠标从某元素移开

<body onload="load()">

    <form action="" style="text-align: center;" onsubmit="subfn()">
        <input type="text" name="username" onblur="bfn()" onfocus="ffn()" onkeydown="kfn()">
        
        <input id="b1" type="submit" value="提交">

        <input id="b1" type="button" 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>92</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(){
        alert("表单被提交了...");
    }

</script>

12案例

<body>

    <img id="light" src="img/off.gif"> <br>

    <input type="button" value="点亮" onclick="on()"> 
    <input type="button"  value="熄灭" onclick="off()">

    <br> <br>

    <input type="text" id="name" value="ITCAST" onfocus="lower()" onblur="upper()">
    <br> <br>

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

    <input type="button" value="全选" onclick="checkAll()"> 
    <input type="button" value="反选" onclick="reverse()">

</body>

<script>

    //1. 点击 "点亮" 按钮, 点亮灯泡; 点击 "熄灭" 按钮, 熄灭灯泡; -- onclick
    function on(){
        //a. 获取img元素对象
        var img = document.getElementById("light");

        //b. 设置src属性
        img.src = "img/on.gif";
    }

    function off(){
        //a. 获取img元素对象
        var img = document.getElementById("light");

        //b. 设置src属性
        img.src = "img/off.gif";
    }



    //2. 输入框聚焦后, 展示小写; 输入框离焦后, 展示大写; -- onfocus , onblur
    function lower(){//小写
        //a. 获取输入框元素对象
        var input = document.getElementById("name");

        //b. 将值转为小写
        input.value = input.value.toLowerCase();
    }

    function upper(){//大写
        //a. 获取输入框元素对象
        var input = document.getElementById("name");

        //b. 将值转为大写
        input.value = input.value.toUpperCase();
    }



    //3. 点击 "全选" 按钮使所有的复选框呈现选中状态 ; 点击 "反选" 按钮使所有的复选框呈现取消勾选的状态 ; -- onclick
    function checkAll(){
        //a. 获取所有复选框元素对象
        var hobbys = document.getElementsByName("hobby");

        //b. 设置选中状态
        for (let i = 0; i < hobbys.length; i++) {
            const element = hobbys[i];
            element.checked = true;
        }

    }
    
    function reverse(){
        //a. 获取所有复选框元素对象
        var hobbys = document.getElementsByName("hobby");

        //b. 设置未选中状态
        for (let i = 0; i < hobbys.length; i++) {
            const element = hobbys[i];
            element.checked = false;
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值