js
功能
:通过浏览器内置的JavaScript引擎进行解释执行,把一个原本只用来显示的页面转变成支持用户交互的页面程序js
引擎
:是JavaScript语言的解释器,用于读取网页中的JavaScript代码,对其处理后执行,如Chrome浏览器的V8引擎js
特点
:是一种脚本语言,特点是简单、易学、易用,语法规则比较松散
可以跨平台,它不依赖操作系统,仅需要浏览器的支持 (现阶段如此,有兴趣的可以了解一下
node
)支持面向对象,可以使JavaScript开发变得快捷和高效,降低开发成本
js
书写位置
:1.行内式 2.内嵌式 (嵌入式) 3.外部式 (外链式)
是javaScript的核心,规定了JavaScript的编程语法和基础核心内容,是所有浏览器厂商共同遵守的一套JavaScript语法工业标准
// 代码
/* 代码 */
// var 声明变量
var age // 声明一个名称为age的变量
age = 10 // 为age变量赋值
var age = 18 // 声明变量的同时赋值
// conts let 也能声明变量,es6的语法
const num = 20 // 声明一个变量,该变量是不可变的常量
let name = 'zs' // 声明一个变量,该变量为局部变量
typeof
var str = "我叫\"张三\""
console.log(str.length) // 6
注:如果计算字符串长度,转义符不包括在内包括整型和浮点型 (整数、小数)
var num = 10
只有两个值 true/false
var bool = true
可以给变量赋值为undefined,或者申明变量但不赋值
var val1 = undefined
var val2
可以给变量赋值为null
var val = null
console.log(typeof val) // Object
var num = 10
console.log(num+'') // 1.利用+拼接一个空字符串(最常用的一种方式)
console.log(num.toString()) // 2.利用toString(),null和undefined无法使用toSting()方式进行转换
console.log(String(num)) // 3.利用String()
var str = '10.1'
console.log(str-0) // 1.利用算术运算符(-、*、/)隐式转换
console.log(parseInt(str)) // 2.使用parseInt()将字符串转为整数
console.log(parseFloat(str)) // 3.使用parseFloat()将字符串转为浮点数
console.log(Number(str)) // 4.使用Number()将字符串转为数字型
var str = ''
console.log(!!str) // 1.两次取反
console.log(Boolean(str)) // 2.Boolean()
// 空字符串、0、NaN、null和undefined 在转换时是false,其他都是true
语法:条件表达式 ? 表达式1 : 表达式2
if(条件1){
}else if(条件2){
}else{
}
switch (表达式){
case 值1:
执行代码1;
break;
case 值2:
执行代码2;
break;
...
default:
执行代码;
}
for (初始化变量; 条件表达式; 操作表达式) {
// 循环体
}
while (条件表达式) {
// 循环体
}
do {
// 循环体
} while(条件表达式)
var arr1 = []
var arr2 = [1,2,3]
var arr3 = new Array()
var arr4 = new Array(4,5,6)
console.log(arr2[0])
console.log(arr2.length) // 获取数组长度
arr2.length = 4 // 修改数组长度
function fun(arr){
for (var i = 1; i < arr.length; i++) { // 控制需要比较的轮数
for (var j = 0; j < arr.length - i; j++) { // 控制参与比较的元素
if (arr[j] > arr[j + 1]) { // 比较相邻的两个元素
var temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
return arr
}
console.log(fun([1,3,5,4,2])) // [1,2,3,4,5]
function fun(arr){
for (var i = 1; i < arr.length; i++) {
//遍历并比较一个无序数组元素与所有有序数组元素
for (var j = i; j > 0; j--) {if (arr[j - 1] > arr[j]) {
var temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
} }
}
return arr
}
对象是由属性和方法组成的一个集合
var obj1 = {}
var obj2 = new Object()
var user = {
name: '张三',
age: 18,
'user-name': 'zs',
run: function(){
console.log(this.name+'跑步')
}
}
console.log(user.name)
console.log(user.['user-name'])
user.run()
// 编写构造函数
function 构造函数名() {
this.属性 = 属性;
this.方法 = function() {
// 方法体
}
}
// 使用构造函数创建对象
var obj = new 构造函数名();
for (var k in obj) {
// 通过k可以获取遍历过程中的属性名或方法名
console.log(k+': '+obj[k]);
}
Math.random()
:获取大于或等于0.0且小于1.0的随机值Math.floor(x)
:向下取整,获取小于或等于x的最大整数Math.ceil(x)
:向上取整,获取大于或等于x的最小整数Math.round(x)
:获取x的四舍五入后的整数值new Date()
:获取当前日期对象var date = new Date()
console.log(date.getFullYear()) // 年(4位数字)
console.log(date.getMonth()) // 月,范围0~11(0表示一月,1表示二月,依次类推)
console.log(date.getDate()) // 日
console.log(date.getHours()) // 时
console.log(date.getMinutes()) // 分
console.log(date.getSeconds()) // 秒
console.log(date.getMilliseconds()) // 毫秒
console.log(date.getDay()) // 星期,范围0~6(0表示星期日,1表示星期一,依次类推)
console.log(date.getTime()) // 时间戳,从1970-01-01 00:00:00距离date对象所代表时间的毫秒数
了解数组对象的一些常用方法,可以通过
Array.prototype
,查看
push
/unshift
/pop
/shift
reverse
sort
indexOf
/lastIndexOf
join
splice
/slice
concat
了解字符串对象的一些常用方法,可以通过
String.prototype
,查看
indexOf
/lastIndexOf
toLowerCase
/toUpperCase
split
substring
/substr
/slice
concat
简单数据类型(如字符串型、数字型、布尔型、undefined、null)又称为值类型,复杂数据类型(对象)又称为引用类型
引用类型的特点是:变量中保存的仅仅是一个引用的地址,当对变量进行赋值时,并不是将对象复制了一份,而是将两个变量指向了同一个对象的引用
/*
function: 声明函数的关键字
fun: 函数名
data1/data2/...:形参
arguments:所有传递过来的实参的值,它是一个数组
return:返回调用函数后,返回的值,不一定要有
param1/param2/...:实参
注:
fun():调用fun函数,括号不能省略
形参和实参个数可以不一致,只要一一对应即可,对应不带即为undefined
*/
function fun(data1, data2, ...){
// 函数体代码
console.log(arguments)
return 返回值
}
fun(param1, param2, ...)
是W3C组织推荐的处理可扩展标记语言的标准编程接口,通过DOM提供的接口,可以对页面上的各种元素进行操作
顶级对象是
document
document.getElementById()
document.getElementsByClassName()
document.getElementsByTagName()
document.getElementsByName()
document.querySelector()
document.querySelectorAll()
document.querySelector('div').onclick = function(){
// 具体处理的代码
}
document.querySelector('div').addEventListener('click',function(){
})
element.innerHTML
:设置或返回元素节点(element)开始和结束标签之间HTML。包括HTML标签,保留空格和换行element.innerText
:设置或返回文本节点,在返回的时候会去除HTML标签和多余的空格、换行element.textContent
:设置或返回文本节点,在返回的时候会去除HTML标签,但保留空格和换行document.write()
:创建元素节点,如果页面文档流加载完毕,再调用会导致页面重绘document.createElement()
+ ( node.appendChild()
或node.insertBefore()
):创建元素节点并添加到dom树种var div = document.createElement('div') // 创建节点,创建好后,该节点并不在DOM树中
var box = document.querySelector('.box')
box.appendChild(div) // 将创建的div节点,添加到指定父节点(box)的子节点列表末尾
box.insertBefore(div, box.children[0]) // 将创建的div节点,添加到指定父节点(box)的指定子节点(box.children[0])前面
node.cloneNode()
:复制节点,
style
:element.style.样式属性名
className
:element.className
element.属性
element.getAttribute('属性名')
element.setAttribute('属性名', '属性值')
element.removeAttribute('属性名')
data-属性名
的方式设置自定义属性
element.dataset.属性名
element.dataset.属性名 = '属性值'
注:获取class时,可使用element.className
或element.getAttribute('class')
element.parentNode
element.childNodes
:获取nodeType为1和3的节点(元素节点和文本节点)element.children
:获取nodeType为1的节点(元素节点)element.firstChild
:获取第一个子节点,nodeType为1或3的节点(元素节点或文本节点)element.lastChild
:获取最后一个子节点,nodeType为1或3的节点(元素节点)element.firstElementChild
:获取第一个子节点,nodeType为1的节点(元素节点),有兼容性问题element.lastElementChild
:获取最后一个子节点,nodeType为1的节点(元素节点),有兼容性问题element.nextSibling
:获取下一个兄弟节点,nodeType为1或3的节点(元素节点或文本节点)element.previousSibling
:获取上一个兄弟节点,nodeType为1或3的节点(元素节点或文本节点)element.nextElementSibling
:获取下一个兄弟节点,nodeType为1的节点(元素节点),有兼容性问题element.previousElementSibling
:获取上一个兄弟节点,nodeType为1的节点(元素节点),有兼容性问题element.parentNode.childNodes
:获取当前元素的所有兄弟节点,nodeType为1和3的节点(元素节点或文本节点)element.parentNode.children
:获取当前元素的所有兄弟节点,nodeType为1的节点(元素节点)当一个事件发生后,跟事件相关的一系列信息数据的集合都放到这个对象里面,这个对象就是event
<button id="btn">获取event对象button>
<script>
var btn = document.getElementById('btn');
btn.onclick = function(e) {
var event = e || window.event; // 获取事件对象的兼容处理
console.log(event);
console.log(event.target); // 触发事件的对象,即btn
console.log(event.type); // 触发事件的类型,即click
console.log(event.preventDefault()); // 阻止默认事件(默认行为)
console.log(event.stopPropagation()); // 阻止事件冒泡
};
script>
提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM,可以对浏览器窗口进行操作
顶级对象是
window
window.onload
窗口(页面)加载事件,当文档内容(包括图像、脚本文件、CSS文件等)完全加载完成会触发该事件,调用该事件对应的事件处理函数
window.onload = function () {
}
window.onresize
调整浏览器窗口大小的时候,就触发window.onresize事件,调用事件处理函数
window.onresize = function () {
}
setTimeout
、clearTimeout
var time1 = setTimeout(function(){},1000) // 一秒钟后执行这个匿名函数
clearTimeout(time1) // 清除掉刚刚的这个延迟器
setInterval
、clearInterval
var time2 = setInterval(function(){},1000) // 每一秒钟后循环执行这个匿名函数
clearInterval(time2) // 清除掉刚刚的这个定时器
console.log(location.host) // URL的主机名和端口
console.log(location.search) // 当前URL的查询部分(“?”及之后的部分)
console.log(location.hash) // URL的锚部分(从“#”开始的部分)
console.log(location.href) // 完整的URL
console.log(history.length) // 历史列表中的网址数
history.back() // 后退一页
history.forward() // 前进一页
history.go(num) // 前进(正数)/后退(负数)几页
jQuery是一个快速、简洁的JavaScript库
<script src="./jquery-3.3.1.min.js">script>
<div id="id1" class="box">div>
<script>
$("div")
jQuery(".box")
$("#id1").addClass('block'); // 给#id1这个元素添加上block这个class
$("#id1").reomveClass('block'); // 给#id1这个元素删除block这个class
$("#id1").toggleClass('block'); // 判断#id1这个元素是否有block这个class,如果有则删除,否则添加
$("#id1").attr('class'); // 获取#id1这个元素的所有class
script>