当前位置: 首页 > news >正文

JavaScript(JS)

 介绍

JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互
JavaScript 和Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似

JS引入方式

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

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

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

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

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

JS基础语法

书写语法

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

每行结尾的分号可有可无
注释:
        单行注释://注释内容
        多行注释:/*注释内容 */
大括号表示代码块

 输出语句

使用 window.alert()写入警告框
使用 document.write()写入 HTML 输出

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

变量

JavaScript 中用 var关键字(variable 的缩写)来声明变量。

Javascript 是一门弱类型语言,变量可以存放不同类型的值
变量名需要遵循如下规则:
1.组成字符可以是任何字母、数字、下划线(_)或美元符号(S)
2.数字不能开头
3.建议使用驼峰命名

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

特点2:可以重复定义的

ECMAScript6 新增了let关键字来定义变量。它的用法类似于 var,但是所声明的变量,只在let关键字所在的代码块内有效(局部变量),且不允许重复声明。
ECMAScript6新增了 const 关键字,用来声明一个只读的常量。一旦声明,常量的值就不能改变。

数据类型、运算符、流程控制语句

数据类型

JS中分为:原始类型(Java当中的基本数据类型)和引用类型(JS当中的对象)

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

运算符

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

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

比较运算符:>,<,>=,<=,!=,==,===
逻辑运算符:&&,||,!
三元运算符:条件表达式?true_value:false_value

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

类型转换

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

其他类型转为boolean:
     Number:0和NaN为false,其他均转为true。
     String:空字符串为false,其他均转为true。
     Null和 undefined:均转为false。

流程控制

JS函数

定义方式二:

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

}

注意事项:

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

虽然传入的参数有四个,但是只调用两个,虽然传递了,但是没有接收

JS对象

Array

JavaScript中Array对象用于定义数组

特点:长度可变,类型可变

注意事项:JavaScript中的数组相当于java集合,数组的长度是可变的,而JavaScript是弱类型,所以可以存储任意类型的数据

属性、方法

区别:

for循环是遍历数组中的所有元素,而forEach遍历数组中有值的元素

ES6 箭头函数

function可以省略,(...)里面是方法的形参列表,{...}里面是函数体的内容

如果要给箭头函数起名字:var xxx=(...) =>{...}

push

splice

start:从哪个位置开始删

deleteCount:删几个

String

JSON

概念:JavaScript对象标记法

JSON是通过JavaScript对象标记法书写的文本

由于其语法简单,层次结构鲜明,先多用于作为数据载体,在网络中进行数据传输

基础语法

BOM

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

组成:
Window:浏览器窗口对象

Navigator:浏览器对象

Screen:屏幕对象

History:历史记录对象
Location:地址栏对象

Window

介绍:浏览器窗口对象。
获取:直接使用window,其中 window.可以省略。 window.alert("Hello window");     alert("Hello window");
属性
  history:对 History 对象的只读引用。请参阅 History 对象
  location:用于窗口或框架的 Location 对象。请参阅 Location 对象
  navigator:对 Navigator 对象的只读引用。请参阅Navigator 对象

方法
  alert():显示带有一段消息和一个确认按钮的警告框
  confirm():显示带有一段消息以及确认按钮和取消按钮的对话框
  setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式
  setTimeout():在指定的毫秒数后调用函数或计算表达式

Location

DOM

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

将标记语言的各个组成部分封装为对应的对象:
  Document:整个文档对象
  Element:元素对象
  Attribute:属性对象
  Text:文本对象
  Comment:注释对象

JavaScript 通过DOM,就能够对HTML进行操作:
改变 HTML 元素的内容
改变 HTML元素的样式(CSS)
对 HTML DOM 事件作出反应
添加和删除 HTML元素


DOM是W3C(万维网联盟)的标准,定义了访问HTML和XML文档的标准,分为三个不同的部分:

1.Core DOM-所有文档类型的标准模型
     Document:整个文档对象
     Element:元素对象
     Attribute:属性对象
     Text:文本对象
     Comment:注释对象
2.XML DOM-XML文档的标准模型
3.HTML DOM-HTML文档的标准模型
     lmage: <img>
     Button : <input type='button'>

如何获取元素对象

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-DOM-案例</title>
</head>

<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";//调用元素对象的方法或属性来控制该元素


    //2. 将所有div标签的内容后面加上:very good (红色字体)
    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. 使所有的复选框呈现选中状态
    //(1).获取复选框
    var ins=document.getElementsByName('hobby');
    for (let i = 0; i < ins.length; i++) {
        const check = ins[i];
        //(2).设置复选框被选中
        check.checked=true;//选中
    }

</script>
</html>

JS事件监听

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

事件绑定

常见事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-事件-常见事件</title>
</head>

<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>
</html>

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-事件-案例</title>
</head>
<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;
        }
    }



</script>
</html>

相关文章:

  • EasyPoi系列之框架集成及基础使用
  • python之递归
  • nnUNet V2修改网络——加入GHPA 模块
  • 【Qt】 Data Visualization
  • P8752 [蓝桥杯 2021 省 B2] 特殊年份——string提取索引转换为值
  • ARM系统源码编译OpenCV 4.10.0(包含opencv_contrib)
  • vue3和vue2的组件开发有什么区别
  • 3.10 企业级AI内容生成引擎:从策略到落地的全链路技术指南
  • 【大模型】Transformers基础组件 - Tokenizer
  • 2024年职高单招或高考计算机类投档线
  • Python基于Django的人脸识别上课考勤管理系统【附源码】
  • flink jobgraph详细介绍
  • Golang GORM系列:GORM并发与连接池
  • 未来游戏:当人工智能重构虚拟世界的底层逻辑
  • 【mysql】数据类型介绍-空间类型-空间索引
  • Docker换源加速(更换镜像源)详细教程(2025.2最新可用镜像,全网最详细)
  • 机械学习基础-10.从时间序列数据中学习-数据建模与机械智能课程自留
  • LabVIEW的吞雨测控系统
  • 探讨如何加快 C# 多层循环的速度效率
  • 软件测试:定义和实质
  • 中保协发布《保险机构适老服务规范》,全面规范保险机构面向老年人提供服务的统一标准
  • 国家林业和草原局原党组成员、副局长李春良接受审查调查
  • 字母哥动了离开的心思,他和雄鹿队的缘分早就到了头
  • 宜昌全域高质量发展:机制创新与产业重构的双向突围
  • 巴基斯坦称未违反停火协议
  • 湖北宜昌:在青山绿水间解锁乡村振兴“密码”