目录
JavaScript
概述
优点
入门
引入
1.内部引入
2.外部引入
调试模式
数据类型
1.字符串
2.数组
3.对象
4.流程控制
if判断
while循环
for循环
forEach循环
for …in-------下标
5.Map和Set
Map
Set
6.iterator
函数
定义函数
方式一
方式二
调用函数
arguments
rest
变量的作用域
全局变量
规范
局部作用域
常量
方法
内部对象
Date
JSON
AJAX
BOM对象
window
screen
location
document
history
DOM对象
核心
获得Dom节点
更新节点
编辑删除节点
插入节点
创建一个新的标签
insertBefore
表单验证
获得要提交的信息
提交表单
jQuery
获取jQuery
选择器
事件
操作DOM
节点文本操作
CSS的操作
元素的显示和隐藏
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为 开发Web页面的脚本语言而出名,但是它也被 用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且 支持面向对象、命令式和声明式(如函数式编 程)风格。
JavaScript是一门世界上最流行的脚本语言,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。
1.轻量级的编程语言
2.可插入html页面的编程代码
3.可供所有浏览器执行
4.容易学习
内部标签
以Chrome 浏览器中可以通过按下 F12 按钮或者右击页面,选择"检查"来开启开发者工具为例:
1、Console 窗口调试 JavaScript 代码
图中我们在 > 符号后输入我们要执行的代码 console.log("runoob"),按回车后执行。
清空 Console 窗口到内容可以按以下按钮:
正常字符串我们使用 单引号,或者 双引号包裹
格式:
var name = '张三';
var name = "'张三";
字符串长度:
var student = "zhangsan";
console.log(student.length);
字符串的可变性,不可变:
var student = "zhangsan";
console.log(student[0]); //Z
student[0] = 1;
console.log(student) // ZhangSan
获取单个字符下标:
console.log(student.indexOf("s")); //0
Array可以包含任意的数据类型
var arr = [1,2,3,4,5,6];//通过下标取值和赋值
arr[0] = 999;
1.长度
arr.length
假如给arr.lennth赋值,数组大小就会发生变化~,如果赋值过小,元素就会丢失
2.indexOf,通过元素获得下标索引
arr.indexOf(2)
1
字符串的"1"和数字 1 是不同的
3.slice()**截取Array的一部分,返回的一个新数组,类似于String中substring
4.push(),pop()
push:压入到尾部
pop:弹出尾部的一个元素
5.unshift(),shift() 头部
unshift:压入到头部
shift:弹出头部的一个元素
6.排序sort()
(3)["B","C","A"]
arr.sort()
(3)["A","B","C"]
7.元素反转reverse()
(3)["A","B","C"]
arr.reverse()
(3)["C","B","A"]
8.concat()
注意:concat()并没有修改数组,只是会返回一个新的数组
9.连接符join
打印拼接数组,使用特定的字符串连接
10.
多维数组
数组:存储数据(如何存,如何取,方法都可以自己实现!)
若干个键值对
格式:
var 对象名 = {
属性名:属性值,
属性名:属性值,
属性名:属性值
}
//定义了一个person对象,它有四个属性
var person = {
name:"Tom",
age:3,
email:"[email protected]",
score:66
}
Js中对象,{…}表示一个对象,建制对描述属性xxx:xxx,多个属性之间用逗号隔开,最后一个属性不加逗号!
JavaScript中的所有的键都是字符串,值是任意对象!
1、对象赋值
2、使用一个不存在的对象属性,不会报错!undefined
3、动态的删减属性,通过delete删除对象的属性
4、动态的添加,直接给新的属性添加值即可
5、判断属性值是否在这个对象中!xxx in xxx
6、判断一个属性是否是这个对象自身拥有的 hasOwnProperty()
无序不重复的集合
使用iterator来遍历迭代Map,Set
遍历数组
遍历Map
绝对值函数
一旦执行到return代表函数结束,返回结果!
如果没有执行return,函数执行完也会返回结果,结果就是undefined
function(x){…}这是一个匿名函数。但是可以吧结果赋值给abs,通过abs就可以调用函数!
方式一和方式二等价!
abs(10)//10
abs(-10) //10
javaScript可以传任意个参数,也可以不传递参数~假设不存在参数,如何规避?
arguments是一个JS免费赠送的关键字;代表,传递进来的所有参数,是一个数组
arguments包含所有的参数,我们有时候想使用多余的参数来进行附加操作。需要排除已有参数~
ES6引入的新特性,获取除了已经定义的参数之外的所有参数~…
rest参数只能写在最后面,必须用…标识。
在javascript中,var定义变量实际是有作用于的。假设在函数体重声明,则在函数体外不可以使用~(闭包)
如果两个函数使用了相同的变量名,只要在函数内部就不冲突
内部函数可以访问外部函数的成员,反之则不行
假设,内部函数变量和外部函数变量,重名!
假设在JavaScript中,函数查找变量从自身函数开始~, 由“内”向“外”查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的变量。
javascript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域都没有找到,就会报错 Refrence
由于我们的所有变量都会绑定到window上,。如果不同的js文件,使用了相同的全局变量,就会产生冲突—>如何减少这样的冲突?
把自己的代码全部放入自己定义的唯一空间名字中,降低全局命名冲突问题~
ES6的let关键字,解决了局部作用域冲突的问题!
建议大家都用let去定义局部作用域的变量;
在ES6之前,怎么定义常量:只有用全部大写字母命名的变量就是常量;建议不要修改这样的值。
在ES6引入了常量关键字 const
方法就是把函数放在对象的里面,对象只有两个东西:属性和方法
定义:
this是无法指向的,是默认指向调用它的那个对象的;
在js中可以控制this指向
基本使用:
转换:
在javascript中,一切皆为对象,任何js支持的类型都可以用JSON表示
格式
JSON字符串和js对象转化
JSON和JS对象的区别:
原生的js写法 xhr异步请求;
jQuery封装好的方法$(#name).ajax("")
axios请求
BOM:浏览器对象模型
window代表浏览器窗口
Navigator封装了浏览器的信息
大多数时候,我们不会使用navigator对象,因为会被认为修改!
不建议使用这些属性来判断和编写代码
代表屏幕尺寸
location代表当前页面的URL信息
document代表当前的页面,HTML DOM文档树
获取具体的文档树节点
获取cookie
劫持cookie原理
www.taobao.com
服务器端可以设置cookie为httpOnly
history代表浏览器的历史记录
DOM:文档对象模型
浏览器网页就是一个Dom树形结构!
要操作一个Dom节点,就必须要先获得这个Dom节点
这是原生代码,之后我们尽量都使用jQuery();
操作文本
操作css
删除节点的步骤:先获取父节点,再通过父节点删除自己
删除多个节点的时候,children是在时刻变化的,删除节点的时候一定要注意。
我们获得了某个Dom节点,假设这个dom节点是空的,我们通过innerHTML就可以增加一个元素了,但是这个Dom节点已经存在元素了,我们就不能这么干了!会产生覆盖
追加:
var ee = document.getElementById('ee');
var js = document.getElementById('js');
var list = document.getElementById('list');
//要包含的节点.insertBefore(newNode,targetNode)
list.insertBefore(js,ee);
表单是什么?form-----DOM树
表单的目的提交信息
Title
jQuery库,里面存在大量的JavaScript函数
公式:$(selector).action()
Title
点我
//原生js,选择器少,麻烦不好记
//标签
document.getElementByTagName();
//id
document.getElementById();
//class
document.getElementByClassName();//jQuery css中的选择器它全部都能用!
$('p').click();//标签选择器
$('#id1').click();//id选择器
$('.class1').click;//class选择器
鼠标事件、键盘事件,其他事件
mousedown()(jQuery)----按下
mouseenter()(jQuery)
mouseleave()(jQuery)
mousemove()(jQuery)----移动
mouseout()(jQuery)
mouseover()(jQuery)
mouseup()(jQuery)
Title
mouse:
在这里移动鼠标试试
$('#test-ul li[name=python]').text();//获得值
$('#test-ul li[name=python]').text('设置值');//设置值
$('#test-ul').html();//获得值
$('#test-ul').html('123');//设置值
$('#test-ul li[name=python]').css({"color","red"});
本质display:none
$('#test-ul li[name=python]').show();
$('#test-ul li[name=python]').hide();