java Script

JavaScript

JavaScript(简称”JS”)是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言,弱类型,脚本语言

三大部分

核心(ECMAScript):语法、类型、语句、关键字等

文档对象模型(DOM):专门用于完成网页之间的交互

浏览器对象模型(BOM):主要用于对浏览器窗口进行操作

运行过程

java Script

使用方式

1、在html文件中的 <script></script>标签中直接编写

  • script标签可以写多个
  • script标签可以出现在任意位置

2、在js文件中编写,在HTML文件中引用


ECMAScript

数据类型

java Script

数组

/*定义数组*/
var a = new Array();
//或
var a = [1,"lucy"];
/*数组索引操作*/
a[0] = 12;
a[1] = "lucy";
document.write(a[0] + "," + a[1]);

允许存放不同的数据类型,但是一般存放统一的数据类型

数组元素没有存放的位置,默认值undefined

常用方法

a.length(); //数组长度
a.push(); //往数组尾部添加元素,类似与进栈
a.pop(); //取值数组最后一个元素,并且移除该元素,类似与出栈

对象

/* 声明对象 */
var student = {name:"lucy",age:12,sex:"男"};
/*对象属性赋值*/
student.age = 15;
/*使用对象的属性,对象名.属性*/
document.write(student.name + "," + student.age + "," + student.sex);

变量

JavaScript使用 var、let关键字定义变量

var 变量名 = 值;
let 变量名 = 值;

变量名称对大小写敏感

注释

  • 单行注释: //
  • 多行注释: /* ... */

运算符

算数运算符

除法和java不一样,数/数 = 数学结果, 1 / 2 = 0.5

其余运算符与java中一致

关系运算符

==:只比较值是否相等,和类型无关(基本数据类型)

===:绝对等于(值和类型都相等)

!=:只比较值是否不相等,和类型无关(基本数据类型)

!==:绝对不等于(值和类型都不相等)

逻辑运算符

&&#x3001;|的结果为数值0(false)、1(true)

其余运算符和java相似

函数

函数可以将一些代码放置在一起,形成一个代码块,该代码块可以反复的进行使用

格式

/*定义函数*/
function 函数名(参数列表){
    return 返回值    //可选
}
/*调用函数*/
函数名();

注意

1、函数可以多个,如果一旦方法的名字相同的话,函数没有重载,后面同名函数会覆盖前面的同名函数

2、调用函数时,可以传入比函数定义参数更多的参数,只是多出来的参数不会被处理

3、对象的属性也可以是函数,可以使用对象名.函数名()进行调用

  • 如果需要在对象中的函数调用对象的属性的话,不可以直接写属性名进行调用
  • 需要使用 this.属性进行调用

4、变量的作用域是在一个函数中

分支结构

if...else if...else的使用方法和java中的类似

switch...case的使用方法和java中的类似,使用时需要注意数据类型,在匹配时,需要绝对等于

循环结构

for循环

和java中的类似

for…in循环

//循环遍历数组
for(var i in arr) {
    alert(i + "..." + arr[i]);
}

while循环

和java类似

do…while循环

和java类似

循环中的break和continue关键字的效果和java中一样

常用API

document.write("输出的内容,可以带html标签")
console.log("在浏览器控制台输出,调试模式下可以看到")
Math.random()  //随机数
parseInt(将数值解析为整数)
prompt("请输入"); //弹窗输入
eval("1+1"); // 可以计算字符串的结果

DOM

文档对象模型(Document Object Model)

在网页被加载时,浏览器会创建页面文档对象模型,形成DOM树

DOM树

java Script
  • Document:树对象,文档对象
  • Element:元素对象,标签对象
  • Attribute:属性对象
  • Text:文本对象
  • Comment:注释对象
  • Node:节点对象

获取标签对象的相关方法

方法作用备注 getElementById() 根据标签的
id属性值

来获取标签对象 一般id属性是用来获取标签对象 getElementsByName() 根据标签的
name属性值

来获取标签对象们 一般name属性是用来给后台获取数据用的 getElementsByTagName() 根据
标签名

来获取标签对象们 getElementsByClassName() 根据标签的
class属性值

来获取标签对象们 一般class属性是用来进行样式设置的,使用类选择器

如果直接在script标签中执行获取标签对象的方法,页面没有加载,获取的对象为null

//页面加载完成,再执行函数
window.onload = function(){}

创建元素的相关方法

方法方法 createElement() 创建元素节点 createAttribute(name) 创建拥有指定名称的属性节点,并返回新的 Attribute 对象 createTextNode() 创建文本节点 createComment() 创建注释节点

==注意:创建出来的对象,都是游离状态,需要放置在父元素对象上==

父元素对象.appendChild(创建的子元素对象);
//删除子元素对象
父元素对象.removeChild(需要删除的子元素对象);

对元素对象内容进行操作

操作的是元素对象,不可以操作元素对象数组,如果需要批量操作,只能写循环进行

获取修改标签内容

标签对象.innerHTML = "字符串";
标签对象.innerText = "字符串";
//区别
innerHTML,获取到的是HTML语句,用于处理标签,会解析字符串中的标签内容
innerText,获取到的是内容,用于处理文本,不会解析字符串中的标签内容

获取修改标签属性

标签对象.属性名 = "属性值";

获取修改标签样式

//在标签上添加样式(样式多的话,不推荐)
标签对象.style.样式名 = "值";
//给元素对象添加类属性,在style标签中添加类样式
标签对象.className = "类名"  //只可以加一个类名
标签对象.classList.add("类名1","类名2",...); //可以添加多类名
//删除多类名元素对象的一个类名
标签对象.classList.remove("类名");

事件

事件的绑定方式

1、在标签元素上 添加onXXX属性的方式绑定(xxx代表事件名称)onXXX的值为js代码, 缺点是耦合度高

2、获取标签元素的对象,通过 &#x6807;&#x7B7E;.onXXX = function(){},绑定事件

3、通过dom元素对象的 addEventListener("&#x4E8B;&#x4EF6;&#x540D;&#x79F0;",function(){}&#xFF0C;&#x4F20;&#x64AD;&#x7279;&#x6027;)方法绑定事件(事件名称不需要on前缀),推荐

JS中的事件

  • 点击事件
  • onclick:鼠标点击某个对象
  • ondblclick:鼠标双击某个对象
  • 焦点事件
  • onblur:元素失去焦点
  • onfocus:元素获得焦点
  • blur():一调用,就会失去焦点
  • focus():一调用,就会获取焦点
  • 键盘相关事件
  • onkeydown:某个键盘的键被按下
  • onkeypress:某个键盘的键被按下或按住,某个键盘按键被按下并松开。
  • onkeyup:某个键盘的键被松开
  • 加载事件
  • onload:某个页面或图像被完成加载
  • onunload:用户离开某个页面
  • 鼠标相关事件
  • onmousedown:某个鼠标按键被按下
  • onmousemove:鼠标被移动
  • onmouseout:鼠标从某元素移开
  • onmouseover:鼠标被移到某元素之上
  • onmouseup:某个鼠标按键被松开
  • 表单相关事件
  • onchange:用户改变域的内容
    • 支持该事件的 HTML 标签: <input type="text">, <select>, </select><textarea></textarea>
  • onselect:文本被选定
    • 支持该事件的 HTML 标签: <input type="text">, <textarea></textarea>
  • onsubmit 提交按钮被点击

事件的传播特性

java Script

addEventListener(“事件名称”,function(){},传播特性):默认的传播方式是false,冒泡

事件的冒泡

如果点击最内层的红色元素的话,点击事件也会传播到外层的蓝色元素,称为事件的冒泡

事件的捕获

==addEventListener可以改变事件的传播方式,第三个参数为true==

如果点击最外层的蓝色元素的话,点击事件会传播到内层的红色元素,称为事件的捕获

事件的委托

将一个元素A中的子元素的点击事件交给元素A处理,称为事件的委托

例如,接收表格中的按钮的点击事件

//变量e用于接收浏览器传入的点击目标对象信息
table.onclick = function(e){
    //获取到事件的触发元素对象
    var t = e.target;
    //获取触发元素对象的名称
    var butName = t.innerText;
    //筛选按钮类型
    switch(butName){
        case "购买":
            //获取购买按钮的父元素对象
            var td = but.parentElement;
            //获取td对象的父元素对象
            var tr = td.parentElement;
            //获取tr的td子元素
            var tds = tr.children;
            alert("购买:" + tds[0].innerText);
            break;
        case "加入购物车":
            break;
        case "查看详情":
            break;
    }
}

正则表达式

格式

//正则表达式格式
/正则表达式主体/修饰符(可选)
//正则表达式验证
var regExp = /正则表达式/;
regExp.test("校验的字符串");

规则

方括号用于查找某个范围内的字符:

表达式描述 [abc] 查找方括号之间的任何字符。 [0-9] 查找任何从 0 至 9 的数字。 (x y) n{x} n恰好出现x次 n{x,} n最少出现x次 n{x,y} n最少出现x次,最多y次

元字符是拥有特殊含义的字符:

元字符描述 \d 查找数字。 \s 查找空白字符。 \w 匹配数字、字母、下划线 \W 匹配任意不是数字、字母、下划线
.

匹配除换行符以外的任意单个字符 ^ 行的开头 $ 行的结尾 \uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

量词:

量词描述 n+ 匹配任何包含至少一个 n 的字符串。 n* 匹配任何包含零个或多个 n 的字符串。 n? 匹配任何包含零个或一个 n 的字符串。

修饰符可以在全局搜索中不区分大小写:

修饰符描述 i 执行对大小写不敏感的匹配。 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 m 执行多行匹配。

使用String类型的 match方法,可以匹配正则表达式

var a = "abcABC";
var r = a.match(/b/gi);

使用String类型的 replace方法,可以替换字符串中的字符

var a = "sb,fuck";
var r = a.replace(/(sb)|(fuck)/gi,"*");

使用String类型的 search方法,可以查询匹配的类型首次开始位置索引

var a = "abc,efg,123,hig";
var r = a.search(/\d/g);

使用String类型的 split方法,可以按照特定规则分割字符串

var a = "abc12def34";
var r = a.split(/\d+/);

汉字的Unicode编码: [\u4e00-\u9fa5]

在表单标签相关属性:

pattern:相关文本规则,正则表达式不需要 //

required:值为required,值不可以为空

BOM

浏览器对象模型(Browser Object Model)尚无正式标准

Window对象

所有浏览器都支持 window 对象。它表示浏览器窗口。

所有 JavaScript 全局对象、函数以及变量 均自动成为 window 对象的成员

全局变量是 window 对象的属性。

全局函数是 window 对象的方法。

Window 常用属性、方法

window.innerHeight – 浏览器窗口的内部高度(包括滚动条)

window.innerWidth – 浏览器窗口的内部宽度(包括滚动条)

window.open("&#x65B0;&#x7A97;&#x53E3;&#x5730;&#x5740;","&#x65B0;&#x7A97;&#x53E3;&#x540D;&#x79F0;","&#x65B0;&#x7A97;&#x53E3;&#x5176;&#x4F59;&#x5C5E;&#x6027;&#x8BBE;&#x7F6E;") – 打开新窗口

window.close() – 关闭当前窗口

window.moveTo() – 移动当前窗口

window.resizeTo() – 调整当前窗口的尺寸

Screen对象

window.screen 对象包含有关用户屏幕的信息。

Screen常用属性、方法

screen.availWidth – 可用的屏幕宽度

screen.availHeight – 可用的屏幕高度

screen.colorDepth – 色彩深度

screen.pixelDepth – 色彩分辨率

Location对象

window.location 对象用于获得当前页面的地址 (URL),并把浏览器 本窗口重定向到新的页面。

Location常用属性、方法

location.hostname – 返回 web 主机的域名

location.pathname – 返回当前页面的路径和文件名

location.port– 返回 web 主机的端口 (80 或 443)

location.protocol– 返回所使用的 web 协议(http: 或 https:)

location.href 返回当前页面的 URL

location.href = 'URL'– 可以重定向到新的页面

location.assign() 方法加载新的文档

history对象

window.history对象包含浏览器的历史。

history常用属性、方法

history.go():加载 history 列表中的某个具体页面,go方法中可以传递参数,如果是正数,就是下某页,如果是负数,就是上某页

history.length:返回浏览器历史列表中的 URL 数量

history.back() – 与在浏览器点击后退按钮相同

history.forward() – 与在浏览器中点击向前按钮相同

计时事件

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

  • 第一个参数:时间到了要执行的方法
  • 第二个参数:周期(毫秒)
  • 如果不关闭,它会一直执行下去

clearInterval():取消由setInterval()设置的timeout

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

  • 第一个参数:时间到了要执行的方法
  • 第二个参数:过多长时间执行该方法(毫秒)
  • 执行完一次之后,就不再执行

clearTimeout():取消由 setTimeout()方法设置的timeout

弹窗

可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框。

警告框

alert("&#x8B66;&#x544A;&#x4FE1;&#x606F;");

确认框

confirm("&#x63D0;&#x793A;&#x4FE1;&#x606F;");

返回值为boolean类型,选择确定返回true,选择取消返回false

提示框

当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。

如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。

window.prompt("&#x63D0;&#x793A;&#x4FE1;&#x606F;","&#x9ED8;&#x8BA4;&#x503C;");

Cookie对象

Cookie 用于存储 web 页面的用户信息。

Cookie 是一些数据, 存储于你电脑上的文本文件中。

当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。

创建Cookie

JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie。

document.cookie="key=value";

添加过期时间

以 UTC 或 GMT 时间, 默认情况下,cookie 在浏览器关闭时删除

document.cookie="key=value; expires=Thu, 18 Dec 2043 12:00:00 GMT";

可以使用 path 参数告诉浏览器 cookie 的路径。默认情况下,cookie 属于当前页面。

document.cookie="key=value; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";

读取 Cookie

document.cookie 将以字符串的方式返回所有的 cookie,类型格式: key1=value;key2 =value; key3=value;

var x = document.cookie;

删除 Cookie

只需要设置 expires 参数为以前的时间即可

document.cookie = "key=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

删除时不必指定 cookie 的值

Original: https://www.cnblogs.com/am0304/p/16486811.html
Author: 超甜的小布丁
Title: java Script

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

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

(0)

大家都在看

  • Maven配置私有仓库

    前言 当公司或个人具有自己独有的jar时,不想公开,一般就会放在自己的私有Maven仓库中,在项目中需要引用,此时就需要将公司私有仓库配置到maven当中,一般我们的maven配置…

    数据库 2023年6月16日
    0136
  • 「开源推荐」一个通用的后台管理系统

    最近跟朋友组了个团队一起做一款开源产品,所以在找一款好用的,功能性强的后台管理系统,找了几天资料,了解了很多后台管理系统,最后发现了一款功能完整,代码结构清晰而且还开源的后台管理系…

    数据库 2023年6月14日
    076
  • [LeetCode]14. 最长公共前缀

    编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,&…

    数据库 2023年6月9日
    072
  • StoneDB 读、写操作的执行过程

    背景介绍 StoneDB 是一款兼容 MySQL 的开源 HTAP 数据库。StoneDB 的整体架构分为三层,分别是应用层、服务层和存储引擎层。应用层主要负责客户端的连接管理和权…

    数据库 2023年5月24日
    076
  • 跑步与读书

    本文来自博客园,作者:ukyo–BlackJesus,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/16746334.html Or…

    数据库 2023年6月11日
    088
  • 姜还是老的辣,看看老战哥的老底儿和老道

    上周日,2022年8月7日,参加了一场久违的半马。中伏天的傍晚,热度不减,全程挥汗如雨,虽不是PB,但也算尽力。晒一下战绩。 支付宝安全发这个通道要对接,今天上午10点,产品经理跟…

    数据库 2023年6月9日
    0129
  • Python学习笔记2(未完待续)

    Python学习笔记2(未完待续) 解决plt中文乱码问题-方法1 plt.rcParams[“font.sans-serif”]=[“SimH…

    数据库 2023年6月14日
    069
  • clash TUN模式

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

    数据库 2023年6月14日
    073
  • Mac IDEA 最常用快捷键(详解版)

    学习背景 公司同事让我提供一个简单的 rpc 接口,然后他坐在我旁边看着我写,写的过程中他不断打断我,比如我在代码换行时,如果光标不在下一行行首或者这行的行尾,我就会先移动光标到行…

    数据库 2023年6月6日
    080
  • innobackupex备份源码解析

    目前MySQL的物理备份大多数采用xtrabackupex进行,其备份过程如下图所示,这里通过解析 xtrabackup 的源码来详细看看其是如何进行备份的,xtrabackup …

    数据库 2023年6月9日
    0100
  • 2022-08-19 PreparedStatement

    PreparedStatement接口是 Statement的子接口,它表示一条预编译过的SQL语句 什么是SQL注入 SQL注入是利用某些系统没有对用户输入的数据进行充分的检查,…

    数据库 2023年6月14日
    076
  • 网络爬虫_Scrapy框架入门

    什么是Scrapy? (百度百科) Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛…

    数据库 2023年6月11日
    091
  • Redisson

    ​ Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数据库提供的一系列优势,基于Java实…

    数据库 2023年6月6日
    084
  • MySQL–数据过滤(AND、OR、IN、NOT操作符)

    MySQL允许给出多个WHERE子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用。 1、组合WHERE子句 此SQL语句检索由供应商1003制造且价格小于等于…

    数据库 2023年6月16日
    079
  • SQLZOO练习5–join(表的连接)

    game表: idmdatestadiumteam1team2 1001 8 June 2012 National Stadium, Warsaw POL GRE 1002 8 J…

    数据库 2023年6月16日
    073
  • 能尽量用数据库代替内存就用吧,减少整天担心内存问题

    游戏不好搞啊,设计的东西,能尽量简单就简单,代码太多判断就写死行了,反正它运行起来是对的就行了。 情形:09:00 昨天发生了很痛苦的一件事情,那就是游戏中data内存同步不到da…

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