3_JavaScript

  • JavaScript语言诞生主要是完成页面的数据验证, 因此它运行在客户端, 需要运行浏览器来解析执行JavaScript代码
  • JS是弱类型, Java是强类型
  • 特点
  • 交互性(它可以做的就是信息的动态交互)
  • 安全性(不允许直接访问本地硬盘)
  • 跨平台性(只要是解释JS的浏览器都可以执行, 与平台无关)

  • 只需在head标签中, 或者在body标签中, 使用script标签来书写JavaScript代码


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">

        alert("hello JavaScript!")
    script>
head>
<body>

body>
html>
  • 使用script标签引入单独的JavaScript代码文件

alert("hello javascript")
DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>

    <script type="text/javascript" src="1.js">script>
    <script type="text/javascript">
        alert("abc")
    script>
head>
<body>

body>
html>
  • 什么是变量?

  • 变量是可以存放某些值的内存的命名

  • js的变量类型
  • 数值类型 number
  • 字符串类型 string
  • 对象类型 object
  • 布尔类型 boolean
  • 函数类型 function
  • js里特殊的值:
  • undefined 未定义,所有js变量未赋予初始值时, 都是undefined
  • null 空值
  • NAN 全称是 Not A Number 非数字,非数值
  • js中定义变量格式
  • var 变量名;
  • var 变量名 = 值;
<script type="text/javascript">
    var i;

    i = 12;

    alert(i);
    alert(typeof i)
    i = "abc";
    alert(typeof i)

    var a = 12;
    var b = "abc";
    alert(a*b);

script>
  • 等于: == 等于是简单的做字面值的比较
  • 全等于: === 除了字面值的比较之外, 还会比较两个变量的数据类型
<script type="text/javascript">
    var a = "12";
    var b = 12;
    alert(a == b);
    alert(a === b);
script>
  • 与运算: &&
  • 或运算: ||
  • 取反运算: !
  • 在js语言中, 所有的变量, 都可以作为一个boolean类型的变量去使用
  • 0, null, undefined, “”(空串) 都认为是false
  • && 与运算 有两种情况
  • 当表达式全为真的时候, 返回最后一个表达式的值
  • 当表达式中, 有一个为假的时候, 返回第一个为假的表达式的值
  • || 或运算 也有两种情况
  • 当表达式全为假的时候, 返回最后一个表达式的值
  • 当表达式中, 有一个为真的时候, 返回第一个为真的表达式的值
  • 与运算和或运算 有短路
  • 短路就是当这个表达式有结果了以后, 后面的表达式不再执行
<script type="text/javascript">
    var a = "abc";
    var b = true;
    var c = false;
    var d = null;

    alert(a && b);
    alert(b && a);
    alert(a && c);
    alert(a && c);
    alert(a && d && c)

    alert(c || d);
    alert(a || c);
script>
  • js中数组的定义:
  • 格式
    • var 数组名 = []; //空数组
    • var 数组名 = [1,’abc’,true]; //定义数组同时赋值元素
<script type="text/javascript">
    var arr = [];

    arr[0] = 12;

    alert(arr.length)

    arr[2] = 'abc';
    alert(arr[1]);
    alert(arr.length);

    for (var i = 0; i < arr.length; i++){
        alert(arr[i]);
    }
script>
  • function 函数名(形参列表){
    函数体
    }
    在js语言中, 如何定义带有返回值的函数?

只需在函数体内直接使用return语句返回值即可

<script type="text/javascript">

    function f() {
        alert("无参函数f()被调用了")
    }

    function f1(a,b) {
        alert("有参函数f1()被调用了 a=>" + a + ",b=>" + b);
    }

    function f2(num1,num2) {
        return num1 + num2;
    }
    alert(f2(100,50));
script>
<script type="text/javascript">
    var f = function () {
        alert("无参函数");
    }
    f();

    var f2 = function (a,b) {
        alert("有参函数a=" + a + ",b=" + b);
    }
    f2(1,"aaa");

    var f3 = function (num1,num2) {
        return num1 + num2;
    }
    alert(f3(1,5));
script>
  • 注: 在Java中允许重载, 但js中函数的重载会覆盖掉上一次的定义
<script type="text/javascript">
    function f() {
        alert("无参函数")
    }
    function f(a,b) {
        alert("有参函数")
    }
    f();
script>
  • 就是在function函数中不需要定义, 但却可以直接用来获取所有参数的变量, 我们管它叫隐形参数
  • js中的隐形参数类似于Java中的可变长参数
  • public void fun(Object… args);
  • 可变长参数其实是一个数组
<title>隐形参数title>
<script type="text/javascript">
    function f() {

        for (var i = 0; i < arguments.length; i++) {
            alert(arguments[i]);
        }
        alert("无参函数")
    }

    function sum() {
        var sum = 0;
        for (var i = 0; i < arguments.length; i++) {
            if (typeof arguments[i] == "number"){
                sum = sum + arguments[i];
            }
        }
        return sum;
    }
    alert(sum(1,2,3,4,"aaa",5));
script>
  • 对象的定义:
  • var 变量名 = new Object(); //对象实例(空对象)
  • 变量名.属性名 = 值; //定义一个属性
  • 变量名.函数名 = function(){} //定义一个函数
  • 对象的访问:
  • 变量名.属性/函数名();
<script type="text/javascript">

    var obj = new Object();
    obj.name = "张三";
    obj.age = 18;
    obj.fun = function () {
        alert("姓名: " + this.name + ", 年龄: " + this.age);
    }

    alert(obj.name);
    alert(obj.age);
    obj.fun();
script>
  • 对象的定义:

var 变量名 = { //空对象

属性名: 值, //定义一个属性

属性名: 值, //定义一个属性

函数名: function(){} //定义一个函数

  • 对象的访问:

变量名.属性/函数名();

<script type="text/javascript">
    var obj = {
        name: "张三",
        age: 18,
        fun: function () {
            alert("姓名: " + this.name + ", 年龄: " + this.age);
        }
    };

    alert(obj.name);
    alert(obj.age);
    obj.fun();
script>
  • 什么是事件?

  • 事件是电脑输入设备与页面进行交互的响应. 我们称之为事件

  • 常用的事件:
  • onload 加载完成事件
    • 页面加载完成后, 常用于做页面js代码初始化操作
  • onclick 单击事件
    • 常用于按钮的点击响应操作
  • onblur 失去焦点事件
    • 常用于输入框失去焦点后验证其输入内容是否合法
  • onchange 内容发生改变事件
    • 常用于下拉列表和输入框内容发生改变后操作
  • onsubmit 表单提交事件
    • 常用于表单提交前, 验证所有表单项是否合法
  • 事件的注册又分为 静态注册动态注册两种:
  • 什么是事件的注册(绑定)? 其实就是告诉浏览器, 当事件响应后要执行哪些操作代码, 叫事件注册或绑定
  • 静态注册事件: 通过html标签的事件属性直接赋予事件响应后的代码
  • 动态注册事件: 是指先通过js代码得到标签的dom对象, 然后再通过dom对象.事件名 = function(){} 这种形式赋予事件响应后的代码,动态注册基本步骤
    1. 获取标签对象
    2. 标签对象.事件名 = function(){}
<script type="text/javascript">
    function onloadFun() {
        alert("静态注册onload事件,所有代码");
    }

    window.onload = function () {
        alert("动态注册的onload事件");
    }
script>


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">

        function onclickFun() {
            alert("静态注册的onclick事件");
        }

        window.onclick = function () {

            var btnObj = document.getElementById("btn2");

            btnObj.onclick = function () {
                alert("动态注册的onclick事件");
            }
        }
    script>
head>
<body>

    <button onclick="onclickFun()">按钮1button>
    <button id="btn2">按钮2button>
body>
html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">

        function onblurFun() {

            console.log('onblur的静态注册事件');
        }

        window.onblur = function () {
            var pwdObj = document.getElementById("pwd");
            pwdObj.onblur = function () {
                console.log("onblur的动态注册事件");
            }
        }
    script>
head>
<body>
    <p>用户名: <input type="text" onblur="onblurFun()">p>
    <p>密码: <input type="text" id="pwd">p>
body>
html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">
        function onchangeFun() {
            alert("英雄已选择完毕");
        }

        window.onchange = function () {
            var selObj = document.getElementById("sel");
            selObj.onchange = function () {
                alert("铭文已选择完毕")
            }
        }

    script>
head>
<body>
    <p>请选择你的出场英雄: p>
    <select onchange="onchangeFun()">
        <option>孙斌option>
        <option>廉颇option>
        <option>诸葛亮option>
        <option>李白option>
        <option>马可波罗option>
    select>
    <p>请选择你的铭文: p>
    <select id="sel">
        <option>通用option>
        <option>坦克option>
        <option>法穿option>
        <option>百穿option>
        <option>攻速option>
    select>
body>
html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">

        function onsubmitFun() {
            alert("onsubmit静态注册---发现不合法");
            return false;
        }

        window.onsubmit = function () {
            var formObj = document.getElementById("form");
            formObj.onsubmit = function () {
                alert("onsubmit动态注册---发现不合法");
                return false;
            }
        }
    script>
head>
<body>

<form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun()">
    <input type="submit" value="静态注册">
form>
<form action="http://localhost:8080" id="form">
    <input type="submit" value="动态注册">
form>
body>
html>
  • DOM全称是Document Object Model 文档对象模型
  • 其实就是把文档中的标签, 属性, 文本, 转换成对象来管理, 我们主要学习它们是如何转换的

  • Document对象的理解

  • 第一点: Document它管理了所有的HTML文档的内容
  • 第二点: Document它是一种树结构的文档. 有层级关系
  • 第三点: 它让我们把所有的标签都对象化
  • *第四点: 我们可以通过document访问所有的标签对象

  • document.getElementById(elementId)

  • 通过标签的id属性查找标签的dom对象, elementId是标签的id属性值
  • document.getElementByName(elementName)
  • 通过标签的name属性查找标签的dom对象, elementId是标签的name属性值
  • document.getElementByTagName(tagName)
  • 通过标签名查找标签的dom对象, tagName是标签名
  • document.createElement(tagName)
  • 通过给定的标签名, 创建一个标签对象, tagName是要创建的标签名

  • 根据元素标签id属性得到某元素标签

  • 示例: 校验输入的用户名是否合法

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">
        function onclickFun() {
            var username = document.getElementById("username");
            var usernameText = username.value;
            var reg = /^\w{5,12}$/;
            if (reg.test(usernameText)){
                alert("用户名合法");
            }else {
                alert("用户名不合法");
            }
        }
    script>
head>
<body>

<p>用户名: <input type="text" id="username">p>
<button onclick="onclickFun()">校验button>
body>
html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>正则title>
    <script type="text/javascript">

        var pattern = /^\w{5,12}$/;
        alert(pattern);
        var str = "aaa1231231231";
        alert(pattern.test(str));
    script>
head>
<body>

body>
html>
  • innerHTML 表示起始标签和结束标签中的内容
  • 第一种: 文字提示, innerHTML 后写上想要显示的文字
    • usernameSpanObj.innerHTML = “用户名合法”;
  • 第二种: 图片提示,, innerHTML 后写上要显示的图片位置
    • usernameSpanObj.innerHTML = “3_JavaScript“;

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">
        function onclickFun() {
            var username = document.getElementById("username");
            var usernameText = username.value;
            var reg = /^\w{5,12}$/;
            var usernameSpanObj = document.getElementById("usernameSpan");

            if (reg.test(usernameText)){
                usernameSpanObj.innerHTML = "用户名合法";

            }else {
                usernameSpanObj.innerHTML = "用户名不合法";

            }
        }
    script>
head>
<body>

<p>用户名: <input type="text" id="username">
    <span id="usernameSpan" style="color: red">span>
p>

<button onclick="onclickFun()">校验button>
body>
html>

  • 根据元素标签name属性得到元素标签集合
  • 示例: 选择框全选,全不选, 反选

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">

        function checkAll() {

            var hobbies = document.getElementsByName("hobby");

            for (var i = 0; i < hobbies.length; i++) {
                hobbies[i].checked = true;
            }
        }

        function checkNo() {
            var hobbies = document.getElementsByName("hobby");
            for (var i = 0; i < hobbies.length; i++) {
                hobbies[i].checked = false;
            }
        }

        function checkReverse() {
            var hobbies = document.getElementsByName("hobby");
            for (var i = 0; i < hobbies.length; i++) {
                hobbies[i].checked = !hobbies[i].checked;

            }
        }
    script>

head>
<body>
    兴趣爱好:
    <input type="checkbox" name="hobby" value="cpp" checked="checked">C++
    <input type="checkbox" name="hobby" value="java">Java
    <input type="checkbox" name="hobby" value="js">JavaScript
    <br/>
    <button onclick="checkAll()">全选button>
    <button onclick="checkNo()">全不选button>
    <button onclick="checkReverse()">反选button>
body>
html>

  • 根据标签元素的标签名得到标签元素集合

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">

        function checkAll() {

            var inputs = document.getElementsByTagName("input");
            for (var i = 0; i < inputs.length; i++) {
                inputs[i].checked = true;
            }
        }
    script>

head>
<body>
    兴趣爱好:
    <input type="checkbox" value="cpp" checked="checked">C++
    <input type="checkbox" value="java">Java
    <input type="checkbox" value="js">JavaScript
    <br/>
    <button onclick="checkAll()">全选button>
body>
html>
  • document对象的三个查询方法
  • 如果标签中有id属性,优先使用 getElementById方法来进行查询
  • 如果标签中没有有id属性,有name属性, 则优先使用 getElementByName方法来进行查询
  • 如果标签中没有有id和name属性,那么使用 getElementsByTagName方法来进行查询
  • 以上三个查询方法, 一定要在页面加载完成后执行, 才能查询到标签对象

  • 节点就是标签对象

  • 方法
  • getElementsByTagName(): 获取当前节点的指定标签名孩子节点
  • appendChild(oChildNode): 可以添加一个子节点, oChildNode是要添加的孩子节点
  • 属性:
  • childNodes: 获取当前节点的所有子节点
  • firstChild: 获取当前节点的第一个子节点
  • lastChild: 获取当前节点的最后一个子节点
  • parentNode: 获取当前节点的父节点
  • nextSibling: 获取当前节点的下一个节点
  • previousSibling: 获取当前节点的上一个节点
  • className: 用于获取或设置标签的class属性值
  • innerHTML: 表示获取或设置起始标签和结束标签中的内容
  • innerText: 表示获取或设置起始标签和结束标签中的文本

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    <script type="text/javascript">

        window.onload = function () {
            var divObj = document.createElement("div");
            divObj.innerHTML = "JavaScript 很牛";
            document.body.appendChild(divObj);
        }
    script>
head>
<body>

body>
html>

Original: https://www.cnblogs.com/qimu666/p/16565744.html
Author: 柒木木木
Title: 3_JavaScript

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598746/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 两表关联更新、删除-七星海棠

    两表关联更新 通用方法 update test1 set name=(select name from test2 where test2.id=test1.id), age=(s…

    数据库 2023年6月11日
    085
  • Java中的线程安全与线程同步

    1.为什么需要线程同步 什么是线程安全:指在 被多个线程访问时,程序可以 持续进行正确的处理。 1.1.线程安全问题 案例:通过抢优惠例子说明线程安全问题 public class…

    数据库 2023年6月6日
    091
  • MySQL实战45讲 13

    13 | 为什么表数据删掉一半,表文件大小不变? 一个 InnoDB 表包含两部分,即: 表结构定义和 数据。 在 MySQL 8.0 版本以前, 表结构是存在以.frm 为后缀的…

    数据库 2023年6月16日
    0102
  • logrotate command in Linux

    背景 在生产过程中,由于磁盘空间、保留周期等因素,会对系统、应用等日志提出要求,要求系统日志定期进行轮转、压缩和删除,从而减少开销,而系统自带的 logrotate 则是一个简单又…

    数据库 2023年6月14日
    0171
  • [VSCode] Todo Tree VSCode插件 待办事项树

    Todo Tree 一款待办事项插件 我们写程序的时候,难免会遇到一些情况需要标记或者搁置,在写代码的时候会用一些特殊的注释来表示不同的内容,使我们可以快速的定位我们注释的位置。 …

    数据库 2023年6月9日
    088
  • Python学习笔记(十一)– Django API RESTful

    (1)路由;(2)视图类(提供给用户访问相当于原来的视图函数);(3)序列化类(提供给视图类使用,把对象序列化成Json) 注意:使用rest_framework,需先 setti…

    数据库 2023年6月16日
    084
  • Redis-主从

    数据库的发展总是从 单机 -> 主从 -> 分片集群 Redis的主从复制 从单机到主从的根本优势在于: 可实现读写分离,分摊读压力;某个从库用于做统计等后台功能 数据…

    数据库 2023年6月11日
    0103
  • HA: FORENSICS靶机练习

    ubuntu拿到手,没有恢复模式,不好绕密码,仿真软件又会更改所有用户的密码,怕影响后续操作,先不采用,先试试用john跑一下看看能不能跑出一两个来。 刚好跑出来一个,用户 &lt…

    数据库 2023年6月11日
    093
  • Kafka集群部署

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    080
  • 8、IDEA提交代码出现: Fetch failed fatal: Could not read from remote repository

    转载自 第一步、确认Git公钥/密钥是否生成: 1、 首先查看本地是否生成git密钥,一般在C盘home目录下:【C:你自己的home目录.ssh】 第二步:添加Git密钥: 右键…

    数据库 2023年6月6日
    093
  • Java 中的异常处理机制

    本篇文章主要介绍了 Java 中的异常 如何处理函数抛出的异常 处理异常的原则 异常处理时,性能开销大的地方 Java 语言在设计之初就提供了相对完善的异常处理机制。 我们首先介绍…

    数据库 2023年6月11日
    0103
  • 20个数据库常见面试题讲解

    事务四大特性(ACID)原子性、一致性、隔离性、持久性? 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别? MySQL常见的三种存储引擎(InnoDB、…

    数据库 2023年6月16日
    089
  • Redis安装

    Redis For Windows 安装 Redis 官方只提供源码包,不支持Windows 老版本 Windows 版本下载地址(最高版本为3)老版本地址 新版本 Windows…

    数据库 2023年6月6日
    097
  • 设计模式之(2)——工厂方法模式

    定义:工厂方法模式又称为工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类来定义创建对象的接口,而子类负责生成具体的对象; 主要作用:将类的实例化延迟到工厂类的子类中进行,由…

    数据库 2023年6月14日
    0103
  • 获取字典中values值中最大的数,返回对应的keys

    1.字典中键值对的获取 print(data.values()) # 查看字典的值 print(data.keys()) # 查看字典的key 2.对字典中的值进行排序 sorte…

    数据库 2023年6月16日
    075
  • django中的视图层

    1.什么是视图层 简单来说,就是用来接收路由层传来的请求,从而做出相应的响应返回给浏览器 2.视图层的格式与参数说明 2.1基本格式 from django.http import…

    数据库 2023年6月14日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球