JavaScript 客户端脚本语言

JavaScript 客户端脚本语言

  • JavaScript发展史

  • JavaScript介绍

  • 基本使用

  • 事件

  • 选择器

  • JS操作HTML

  • 数据类型:字符串、数组、对象

  • 操作符、流程控制

  • 函数

1 JavaScript 发展史

1.1 JavaScript 介绍

JavaScript(简称JS):是一种轻量级客户端脚本语言,通常被直接嵌入 HTML 页面,在浏览器上执行。

JavaScript的主要用途:

  • 使网页具有交互性,例如响应用户点击,给用户提供更好的体验

  • 处理表单,检验用户输入,并及时反馈提醒

  • 浏览器与服务端进行数据通信,主要使用 Ajax 异步传输

  • 在网页中添加标签,添加样式,改变标签属性等

2 JavaScript基本使用

1、内部方式(内嵌样式),在body标签中使用

<script type="text/javascript">
    <!--
        javaScript语言
    -->
</script>

2、外部导入方式(推荐),在head标签中使用,这是单独将 js 文件独立到一个文件中被,然后直接引用即可

<script type="text/javascript" src="my.js"></script>

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试js</title>
</head>
<body>
    <div>
        测试
    </div>
    <script>
        // 定义 name 变量,采用 ; 号结尾 
        var name = "hello";
        // alert 内置警告弹窗的方法,这里是将 name 变量进行输出 
    </script>
</body>
</html>

可以看到已经弹出 hello


然后当我们点击确定以后就会出现在 div 中写入的测试

2.1 事件

在我们日常的前端开发中都是以事件为导向来编写 js

事件:就是指在 HTML 中发生一个什么样的行为,然后做什么样的事。例如点击按钮,点击后做相应操作,例如弹出一句话

JS 就是更具这样的一个事件来做操作的

演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试js</title>
</head>
<body>
    <div>
        <button onclick="alert('你好前端!')">普通按钮</button>
    </div>
</body>
</html>

当我们点击普通按钮,就会弹出你好前端

  • onclick:是一个常用CSS事件属性,当元素有鼠标点击时触发JS脚本。

  • alert():是一个JS内置函数,在浏览器输出警告框。一般于代码测试,可判断脚本执行位置或者输出变量值。

一般两种情况会使用到 js:

  1. 访问页面时,进行页面准备工作,例如数据渲染从后端获取数据
  2. 点击某个元素的时候才会使用到 js,并实现相应的操作,例如表单的提交

2.2 选择器

想操作元素,必须先找到元素,主要通过以下三种方法:

  • 通过id(常用)

  • 通过类名

  • 通过标签名

2.2.1 通过 ID 查找元素

这里通过 ID 查找元素,当他点击元素的时候就会触发一个事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试js</title>
</head>
<body>
    <div>
        <button id="btn">点我</button>
    </div>
    <script>
        // 通过 id 获取元素,并将返回值传递给 x
        var x = document.getElementById('btn');

        // 调用 onclick 点击动作,并绑定给 x 元素,赋值一个匿名函数
        x.onclick = function () {
            // 逻辑动作:输出 hello
            alert('hello !')
        }
    </script>
</body>
</html>

当我点击点我按钮的时候就会弹出 hello

2.2.2 通过标签名

使用标签名的方式并不是很多,一般我都是采用 id 的方法实现

示例:通过标签名

<div id="main">
    <p>Hello world!1</p>
    <p>Hello world!2</p>
    <p>Hello world!3</p>
</div>
<script type="text/javascript">
var x = document.getElementById(“main”); //获取id为main的元素
var y = x.getElementsByTagName("p"); // 返回的是一个集合,下标获取
document.write(“div中的第二段文本是:” + y[1].innerHTML); //向当前文档写入内容
</script>

2.3 JS 操作 HTML

插入内容:

document.write("<p>这是JS写入的段落</p>"); // 向文档写入HTML内容

x = document.getElementById('demo');  // 获取id为demo的元素

x.innerHTML="Hello"                   // 向元素插入HTML内容

改变标签属性:

document.getElementById("image").src="b.jpg" // 修改img标签src属性值

改变标签样式:

x = document.getElementById("p") //获取id为p的元素

x.style.color="blue" //字体颜色

2.3.1 示例一:插入内容

当我点击这个按钮的时候我向 p 标签中添加一个类,然后在 p 这个标签中定义一个 ID ,而我们要实现的就是等会往 pp id 中放入内容,然后当我们点击点我这个按钮时就会自动将我们定义的内容显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试js</title>
</head>
<body>
    <div>
        <button id="btn">点我</button>
        <p id="pp"></p>
    </div>
    <script>
        // 通过 id 获取元素,并将返回值传递给 x
        var x = document.getElementById('btn');

        // 调用 onclick 点击动作,并绑定给 x 元素,赋值一个匿名函数
        x.onclick = function () {
            // 因为获取 p 标签是在 div 中的 id = pp 
            var p = document.getElementById('pp');

            // p.innerHTML 可以理解为就是向元素设置内容
            p.innerHTML="这是一个段落"
        }
    </script>
</body>
</html>

未点击的情况


点击之后,就会弹出"这是一个段落"

2.3.2 示例二:修改标签属性

改变标签属性:

document.getElementById("image").src="b.jpg" // 修改img标签src属性值

这里我将导入两张图片。默认显示是第一个,然后我想让他在显示上面要有修改,那么我们就能够通过 js 实现

实现的效果就是,当我们点击按钮的时候就会实现图片的更换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试js</title>
</head>
<body>
<div>
    <button id="butimg">点我更换图片</button>
<!--  这里导入图片,并且给该 img 标签添加 id -->
    <img src="images/testIMG.png" id="test">
</div>
<script>
    //
    var x = document.getElementById("butimg");
    x.onclick = function () {
        // 获取 img 标签的 test id
        var  y =  document.getElementById("test");
            // 当上面点击了 点我更换图片 的标签时就会直接更换为 钻戒 的图片,改变 img 标签的 src 属性
            y.src="images/钻戒.jpg"
    }
</script>
</body>
</html>

未点击前

当我们点击按钮后就会变为钻戒

2.3.3 示例三:改变标签样式

x = document.getElementById("p") // 获取id为p的元素

x.style.color="blue"          // 字体颜色

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试js</title>
</head>
<body>
<div>
    <button id="but1">点我显示 p 标签</button>
    <p id="pp"></p>
    <button id="but2">点我更换 p 标签颜色</button>
</div>
<script>
    // 通过获取 button 标签的 but1 id 来显示 p 标签的内容
    var x = document.getElementById("but1");
    x.onclick = function () {
        // 获取 p 标签的 pp id 然后将  这是用来改变颜色演示的 p 标签 进行渲染
        var p = document.getElementById("pp");
        p.innerHTML = "这是用来改变颜色演示的 p 标签"
    }

    // 当点击 but2 的 id 按钮是就会直接触发  p.style.color = "blue" 动作,将字体变为蓝色
    var x1 = document.getElementById("but2");
    x1.onclick = function () {
        var p = document.getElementById("pp");
        p.style.color = "blue"
    }
</script>
</body>
</html>

1 先点击显示 p 标签

2 点击更换 p 标签颜色字体变为蓝色

2.4 数据类型:字符串

在 JS 中,数据类型有:字符串、数字、布尔、数组、对象、Null、Undefined

字符串处理:

var s = "hello world"; 
s.length;               // 字符串长度
s[4]                    // 根据索引获取值
s.replace('h','H');     // 替换某个字符
s.split("分隔符")          // 分隔为数组
s.match("w")          // 找到返回匹配的字符,否则返回null

字符串拼接:“+”

2.4.1 示例一:字符串处理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
        // 字符串处理,定义 s 变量为字符串值为 hello world
        var s = "hello world!"
        a = s.length;       // 输出字符串长度
        b = s[4];           // 输出下标为 4 的索引,这里为 o
        c = s.replace('h','H');     // 字符串替换,将 h 替换为 H
        d = s.split("分隔符号");      // 分隔为数组
        e = s.match("w");           // 匹配 s 变量字符串中是否包含 w ,如果没有包含则输出 null,匹配成功就返回数组

        // 通过 console.log 方法将 a b c d e 变量输出到控制台
        console.log(a,b,c,d,e)
    </script>
</body>
</html>

通过浏览器访问,并点击 F12 查看 console


12 = 当前 s 变量的字符串长度为 12

o = s 字符串下标为 4 的字符

Hello world! = 可以看到 h 已经替换为 H

['w', index: 6, input: 'hello world!', groups: undefined] = 匹配字符串成功并且索引为 6

2.4.2 示例二:字符串拼接

在这个案例中,我想把字符串长度进行拼接就需要看下面案例,在 js 中通过 + 实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
        // 字符串处理,定义 s 变量为字符串值为 hello world
        var s = "hello world!"
        a = s.length;       // 输出字符串长度
        b = s[4];           // 输出下标为 4 的索引,这里为 o
        c = s.replace('h','H');     // 字符串替换,将 h 替换为 H
        d = s.split("分隔符号");      // 分隔为数组
        e = s.match("w");           // 匹配 s 变量字符串中是否包含 w ,如果没有包含则输出 null

        // 通过 console.log 方法将 a b c d e 变量输出到控制台
        console.log(a,b,c,d,e)

        // 字符串拼接
        console.log("字符串长度: "+a )
    </script>
</body>
</html>

2.5 数据类型:数组

数组:是一个序列的数据结构。

应用场景:

临时数据存储,从服务器端获取 json 数据,转为 js 对象后里面就包含了数组,然后就直接按照下面方法进行操作

定义:

var computer = new Array();

var computer = ["主机","显示器","键盘","鼠标"]

向数组添加元素:

computer[0]="主机";

computer[1]="显示器";

computer[2]="键盘"; 

array.push("鼠标")

通过索引获取元素:

computer[2]

2.5.1 示例一:定义数组

先初始化空数组然后在添加元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
    // 定义空数组
    arr = new Array();

    // 往数组中添加数据
    arr.push('主机');
    arr.push('显示器');

    // 在浏览器控制器输出 arr 数组
    console.log(arr);
    </script>
</body>
</html>

可以看到已经将数组输出

在初始化的同时直接添加元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
    // 定义 arr 的同时直接赋值
    newArr = ['新主机','新键盘','新显示器']

    // 在浏览器控制器输出 arr 数组
    console.log(newArr);
    </script>
</body>
</html>

可以看到这就是初始化的同时直接赋值

2.5.2 示例二:替换元素

这里我想替换原有的下标的元素就直接指定对应下标即可

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
    // 定义 arr 的同时直接赋值
    newArr = ['新主机','新键盘','新显示器'];

    // 直接替换 [0] 的下标
    newArr[0] = "比新主机还新"

    // 在浏览器控制器输出 arr 数组
    console.log(newArr);
    </script>
</body>
</html>

2.5.3 示例三:获取元素

直接通过下标获取

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
    // 定义 arr 的同时直接赋值
    newArr = ['新主机','新键盘','新显示器'];

    // 直接输出 2 的下标
    console.log(newArr[2]);
    </script>
</body>
</html>

2.6 数据类型:对象

和 golang 中的 map 类似

对象:是一个具有映射关系的数据结构。用于存储有一定关系的元素。

格式:d = {'key1':value1, 'key2':value2, 'key3':value3}

注意:对象通过 key 来访问 value,因此字典中的 key 不允许重复。

定义:

    var user = {
        name:"老张",
        sex : "男",
        age : "30",
    }

通过键查询值:

n = user.name;

sex = user['sex'];

增加或修改:

user.height = "180cm"
user['height'] = "180cm"

2.6.1 示例一:定义对象并操作

定义一个对象用于保存用户信息

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
    var user = {
        name:"老张",
        sex : "男",
        age : "30",
    };

    // 打印至浏览器终端中
    console.log(user)
    </script>
</body>
</html>

2.6.2 示例二:向对象添加数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
    var user = {
        name:"老张",
        sex : "男",
        age : "30",
    };

    // 向 user 对象中添加一个 key = city value = 北京 的新数据
    user['city']= '北京';
    // 打印至浏览器终端中
    console.log(user)
    </script>
</body>
</html>

添加成功

2.6.3 示例三:获取指定的值

通过指定 key 获取对应 value

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
    var user = {
        name:"老张",
        sex : "男",
        age : "30",
    };

    // 指定获取 name 的 key
    console.log(user.name)
    </script>
</body>
</html>

2.6.4 示例四:修改指定的key

这里通过指定的 key ,并将对应的 value 修改为我们想要的新值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
        var user = {
            name:"老张",
            sex : "男",
            age : "30",
        };

        // 指定修改 user.name 
        user.name = "新老张"

        // 指定获取 name 的 key
        console.log(user.name)
    </script>
</body>
</html>

2.6.5 示例五:嵌套自定义类型

这里我将或在 user 的这个对象中嵌套一个数组,当然这种方式还可以嵌套其他的数据类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>

    </div>
    <script>
        // 定义数组
        arr = ['数组1','数组2','数组3']

        var user = {
            name:"老张",
            sex : "男",
            age : "30",
        };

       // 往 user 对象中嵌套数组
        user['arr'] = arr
        // 获取 user
        console.log(user)

        // 获取指定数组
        console.log("获取下标为 2 的数组:"+user.arr[1])
    </script>
</body>
</html>

2.7 操作符

操作符:

​ 一个特定的符号,用它与其他数据类型连接起来组成一个表达式。常用于条件判断,根据表达式返回True/False采取动作。

2.8 条件判断

if条件判断:判定给定的条件是否满足(True或False),

根据判断的结果决定执行的语句。

语法:

if (表达式) {
<代码块> 
} else if (表达式) { 
<代码块>
} else {
<代码块> 
}

2.8.1 示例一:如何在 html 中使用 if

在这个例子中我将实现开灯和关灯

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>
        <!-- 先获取图片默认是关灯状态 -->
        <img src="./images/off.png" alt="" id="deng">

        <!-- 设置 onclick 为 changeImage 函数并且写 on 和 off ,用于触发 changeImage 函数 -->
        <button onclick="changeImage('on')">开灯</button>
        <button onclick="changeImage('off')">关灯</button>
    </div>
    <script>
         // 定义函数,用于接收 status 参数
         function changeImage(status) {
             // 通过 id 获取 img 标签,用于下面的判断实现修改状态
             x = document.getElementById("deng")

             // 如果状态为 on 这就是开灯,从而调用 ./images/on.png 图片
             if (status == "on"){
                 x.src = './images/on.png'
                 // 如果状态为 off 这就是关灯,从而调用 ./images/off.png 图片
             } else if (status == "off") {
                 x.src = './images/off.png'
             }
         }
    </script>
</body>
</html>

默认为关灯状态

点击开灯

点击关灯

2.9 循环

for循环:一般用于遍历数据类型的元素进行处理,例如字符串、数组、对象。

语法:

for (<变量> in <序列>) {
<代码块> 
}

2.9.1 示例:遍历数组

// 定义数组
var computer = ["主机","显示器","键盘","鼠标"];

方式1:
for(i in computer) {
    console.log(computer[i]) // 使用索引获取值 
}

方式2:
computer.forEach(function (e) {
    console.log(e)
})

2.9.1.1 方式一

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>
    </div>
    <script>
        // 定义数组
        var computer = ["主机","显示器","键盘","鼠标"]

        // i 获取 computer 中的元素下标
        for (i in computer) {
            // 输出对应的每个下标元素
            console.log("i="+i,computer[i])
        }
    </script>
</body>
</html>

2.9.1.2 方式二

通过匿名函数的写法实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>
    </div>
    <script>
        // 定义数组
        var computer = ["主机","显示器","键盘","鼠标"]

        // 通过匿名函数实现遍历,这里将 computer 数组中的元素传递给了 i
        computer.forEach(function (i) {
            console.log(i)
        })
    </script>
</body>
</html>

2.9.2 示例:遍历对象

其实遍历对象和遍历数组差不多的

var user = {name:"老张",sex:"男",age:"30"};

方式1:
for(let k in user) {
    console.log(k + ":" + user[k])
}

方式2:
Object.keys(user).forEach(function (k) {
    console.log(k + ":" + user[k])
})

2.9.2.1 方式一

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>
    </div>
    <script>
        // 定义对象
        var user = {
            name:"老张",
            age :"26",
            sex:"男"
        }

        // k 等于 user 中获取的对象 key
        for (k in user) {
            // 浏览器终端输出
            console.log(k + ":" + user[k])
        }
    </script>
</body>
</html>

2.9.2.2 方式二

这种方法和遍历数组的第二种方法很像

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试 js</title>
</head>
<body>
    <div>
    </div>
    <script>
        // 定义对象
        var user = {
            name:"老张",
            age :"26",
            sex:"男"
        }

        // 通过 object.keys 内置方法调用匿名函数来实现
        Object.keys(user).forEach(function (k) {
            console.log(k + ":" + user[k])
        })
    </script>
</body>
</html>

2.10 函数:定义与调用

函数:是指一段可以直接被另一段程序或代码引用的程序或代码。在编写代码时,常将一些常用的功能模块编写成函数,放在函数库中供公共使用,可减少重复编写程序段和简化代码结构。

语法:

function 函数名称(参数1, 参数2, ...) {
    <代码块>
    return <表达式> 
}

2.10.1 函数参数:接收参数

示例:

<button type="button" onclick="myFunc('老张', '30')">点我</button>
<script type="text/javascript">
    function myFunc(name, age) {
    alert("欢迎" + name + ", 今年" + age);
    }
</script>

2.10.2 函数:匿名函数与箭头函数

匿名函数与箭头函数:没有名字的函数,一般仅用于单个表达式。

一般匿名函数或者箭头函数都是用于直接被别的方法接收

示例:

<script type="text/javascript">
    // 普通函数
    function sum1(x,y) {
        return x+y;
    }

    // 匿名函数
    sum2 = function(x,y) {
        return x+y;
    }

    // 箭头函数,相比匿名函数又简化了很多
    sum3 = (x,y) => {
        return x+y;
    }

    console.log(sum1(1,2)) // 3
    console.log(sum2(3,4)) // 7
    console.log(sum3(5,6)) // 11
</script>

3 window对象:location属性处理URL

location 是 js 中内置的属性

示例:刷新按钮

<button type="button" onclick="location.reload()">刷新当前页面</button>

<!-- 直接请求的就是 location.href 内置函数 -->
<button type="button" onclick="location.href=location.href">重新请求当前页面</button>

<!-- 直接跳转到百度 -->
<button type="button" onclick="location.href='http://www.baidu.com'">请求别的页面</button>
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇