BOM和DOM
js代码引入
1 方式1: 2 <script> 3 4 // alert('澳门皇家赌场上线啦!!!') 5 6 var a1 = 100; 7 8 </script> 9 10 方式2: 11 <script src='js文件路径'></script>
变量声明
1 var a = 10;
基础数据类型
数值类型 Number
1 整数,浮点数,NaN
字符串
1 var s1 = 'hello'; 2 var s2 = 'world'; 3 var ss = s1+s2
字符串的常用方法
1 var s = 'hello'; 2 var s2 = 'world'; 3 s.length 长度 4 s.trim() 移除两端空白 s.trimLeft() s.trimRight() 5 s.concat() 字符串拼接 s.concat(s2) 6 s.indexOf() 通过元素找索引 s.indexOf('e') 7 s.charAt(n) 通过索引找元素 s.charAt(1) -- 'e' 8 s.slice() 切片 s.slice(1,3) 9 s.split() 分隔 s.split('e',2) -- ['h','llo'] 10 s.toLowerCase() 全部变小写 11 s.toUpperCase() 全部变大写 12
布尔值
1 var a = true; 2 var b = false; 3 空的数据类型也是false,'',0,NaN,null,undefined..
null和undefined
1 null 空值,一般用来清空一个变量值来用 2 undefined var a; 声明了变量,还没有赋值,此时这个变量值为undefined
类型转化
1 parseInt('111') 2 parseFloat('1.11')
复杂数据类型
数组
1 var a = [11,22,33]; 2 var a = new Array([11,22,33]); 3 typeof a; --- object类型 4
数组常用方法
1 a[1] -- 1是索引,索引取值 2 a.length -- 数组长度 3 a.push() 尾部追加 a.push('aa') 4 a.pop() 尾部删除 5 a.unshift() 头部追加 a.unshift('aa') 6 a.shift() 头部删除 7 a.sort() 排序 8 function sortNumber(a,b){ return a - b; } 升序 a.sort(sortNumber) 9 a.slice() 切片 10 a.splice() 删除元素 a.splice(索引,删除几个,新值) a.splice(1,2,'aa','bb') 11 a.reverse() 反转 -- 原数组上反转 12 a.join('+') 元素拼接 13 a.concat() 14 var b = ['aa','bb'] 15 a.concat(b) -- 类似python的extend 16
自定义对象
1 var a = {'name':'chao',age:18} 2 a.name\a['name'] 取值 3 4 for (var i in a){ 5 console.log(i,a[i]) 6 } 7
运算符
算数运算符
1 + - * / % ++ -- a++ 和 ++a的区别,a++ 先执行后面的逻辑,在执行加一操作.++a相反 2 a-- --a都是减一操作
比较运算符
1 > >= < <= != !== == ===
逻辑运算符
1 && || ! 与 或 非
赋值运算符
1 += -= *= /=
流程控制
if
1 var a = 10; 2 if (a>5){ 3 console.log(11) 4 } 5 else{ 6 ... 7 } 8 9 多条件判断 10 if (a>5){ 11 console.log(11) 12 } 13 else if (a===5){ 14 ... 15 } 16 else{ 17 ... 18 }
switch 切换
1 var a = 10; 2 switch (a){ 3 case 10: 4 ... 5 break; 6 case 11: 7 ... 8 break; 9 default: 10 do something! 11 } 12 13 14 switch (a){ 15 case 10: 16 console.log('bbbb') case 10成立的话,执行case 10后面的内容,和case 10: case 11:两个条件共同要执行的那段代码,条件成立一个就行 17 case 11: 18 console.log('aaaa') 19 break; 20 default: 21 console.log('do something!') 22 }
while
1 var a = 0; 2 while (a<10){ 3 console.log(a); 4 a++; 5 }
三元运算符
1 var a = 1; 2 var b = 2; 3 var c = a > b ? a : b;
for
1 for (var i=0;i<10;i++){ 2 console.log(i); 3 } 4 var d = [11,22,33]; 5 循环遍历数组 6 方式1 7 for (var i in d){ // i是索引,python中的 for i in [11,22,33]:print(i) i都是元素 8 console.log(i,d[i]); 9 } 10 方式2 11 for (var i=0;i<d.length;i++){ 12 console.log(i,d[i]); 13 } 14 15 循环遍历自定义对象 16 var a = {'name':'dazhuang',age:18} 17 for (var i in a){ 18 console.log(i,a[i]); 19 } 20 21
函数
1 function f1(){ 2 console.log('红旭!'); 3 } 4 function f1(a,b){ 5 console.log('红旭!'); 6 return '红旭妹妹!' 7 } 8 f1(1,2) 执行 9 10 匿名函数 11 var sum = function(a,..){ 12 console.log('红旭妹妹想唱歌!') 13 }; 14 sum(1,...) 15 16 自执行函数 17 (function (a,..){...})(1,...)
作用域
1 函数变量,从自己那一层逐层往外找
闭包
1 function outer(){ 2 var o = 10; 3 function inner(){ 4 console.log(o); 5 } 6 return inner; 7 } 8 var ret = outer(); 9 ret()
面向对象
1 function Person(a,b){ 2 this.a = a; this--python 的 self 3 this.b = b; 4 } 5 Person.prototype.f1 = function (c,d){return c+d;} 6 7 var p = new Person('aa','bb') 8 9 p.a -- 'aa' 10 p.f1(1,2)
Date对象
1 var d = new Date(); 当前时间日期对象 2 d.toLocaleString(); -- 2019/7/4 上午9:32 3 var d = new Date('2019/7/2 12:00'); 4 d.toLocaleString(); -- 2019/7/2 中午12:00
date对象的常用方法
1 d.getDate() -- 4 2 d.getDay() ---4 3 //getMonth () 获取月(0-11,0表示1月,依次类推) 4 //getFullYear () 获取完整年份 5 //getHours () 获取小时 6 //getMinutes () 获取分钟 7 //getSeconds () 获取秒 8 //getMilliseconds () 获取毫秒 9 //getTime () 返回累计毫秒数(从1970/1/1午夜),时间戳
json对象
1 序列化 2 var d = {'xx':'xx'}; 3 var dStr = JSON.stringify(d) -- '{"xx":"xx"}' 4 5 反序列化 6 var d = '{"xx":"xx"}'; 7 var dd = JSON.parse(d) -- {"xx":"xx"}
正则RegExp
1 var s = 'hello'; 2 var s2 = 'alex a'; 3 var a = /^a/; 4 var a = new RegExp("^a") 5 a.test(s) -- false 6 a.test(s2) -- true 7 a.test() -- 不写参数,里面默认放一个"undefined"字符串 8 9 s2.match(/a/g) --['a','a'] 10 s2.split(/a/g) 字符分隔 11 s2.replace(/a/gi,'sss'); 12 s2.search(/a/) -- 找索引位置
Math内置模块
1 Math.abs(-1) -- 1 2 exp(x) 返回 e 的指数。 3 floor(x) 小数部分进行直接舍去。 4 log(x) 返回数的自然对数(底为e)。 5 max(x,y) 返回 x 和 y 中的最高值。 6 min(x,y) 返回 x 和 y 中的最低值。 7 pow(x,y) 返回 x 的 y 次幂。 8 random() 返回 0 ~ 1 之间的随机数。 9 round(x) 把数四舍五入为最接近的整数。 10 sin(x) 返回数的正弦。 11 sqrt(x) 返回数的平方根。 12 tan(x) 返回角的正切。
今日内容
BOM 浏览器对象模型
window对象的子对象中的location
1 location.href 获取当前url:"https://www.cnblogs.com/clschao/articles/10092991.html" 2 location.href="URL" // 跳转到指定页面 3 示例:location.href = 'http://www.baidu.com';直接跳转到百度 4 location.reload() 重新加载页面,就是刷新一下页面
计时器相关(计时器是异步的)
setTimeout 计时器,一段时间之后做某些事情
1 setTimeout('confirm("你好");',3000); #3秒之后执行前面的js代码 2 setTimeout(confirm('xxx'),3000); #如果写的不是字符串,会直接执行 3 setTimeout(function(){confirm('xxx')},3000); #最好写成函数 4 5 var a = setTimeout(function(){console.log('xxx')},3000); #a是浏览器来记录计时器的一个随机数字 6 clearTimeout(a) #清除计时器,通过这个数字可以清除
setInterval 计时器,每隔一段时间做某些事情
1 var a = setInterval(function(){console.log('xxx')},3000); 2 clearInterval(a);
DOM
选择器
直接查找
1 document.getElementById 根据ID获取一个标签 2 document.getElementsByClassName 根据class属性获取(可以获取多个元素,所以返回的是一个数组) 3 document.getElementsByTagName 根据标签名获取标签合集 4 示例: 5 <div class="c1" id="d1"> 6 待到将军归来日,朕与将军解战袍! 7 </div> 8 9 <div class="c1" id="d2"> 10 日照香炉生紫烟,遥看瀑布挂前川! 11 </div> 12 13 var a = document.getElementById('d1'); # 获取id属性值为d1的标签 拿到的直接是标签对象 14 var a = document.getElementsByClassName('c1'); #获取class值为c1的所有标签 拿到的是数组 15 var a = document.getElementsByTagName('div'); #获取所有div标签 拿到的是数组 16 17
间接查找
1 var a = document.getElementById('d1'); 2 a.parentElement; #获取a这个标签的父级标签. 3 children 所有子标签 4 firstElementChild 第一个子标签元素 5 lastElementChild 最后一个子标签元素 6 nextElementSibling 下一个兄弟标签元素 7 previousElementSibling 上一个兄弟标签元素
节点操作
1 创建节点(创建标签) 2 var a = document.createElement('标签名称'); 3 示例,创建a标签 4 var a = document.createElement('a'); 5 var dd = document.getElementById('dd'); 找到div标签 6 7 添加节点 8 #添加节点,添加到了最后 9 dd.appendChild(a);将创建的a标签添加到dd这个div标签里面的最后. 10 11 #在某个节点前面添加节点 12 父级标签.insertBefore(新标签,某个儿子标签) 13 示例 14 var dd = document.getElementById('dd'); #找到父级标签 15 var a = document.createElement('a'); #创建一个新的a标签 16 var d2 = dd.children[1]; #找到父级标签下的某个儿子标签 17 dd.insertBefore(a,d2); #将a标签插入到上面这个儿子标签的前面. 18 删除节点 19 dd.removeChild(d2); 父级标签中删除子标签 20 21 替换节点 22 var dd = document.getElementById('dd'); #找到父级标签 23 var a = document.createElement('a'); #创建a标签 24 a.innerText = '百度'; 25 var d1 = dd.children[0]; #找到要被替换的子标签 26 dd.replaceChild(a,d1); #替换 27
文本操作
1 d1.innerText; 查看 2 3 设置: 4 d1.innerText = "<a href=''>百度</a>"; 5 d1.innerHTML = "<a href=''>百度</a>"; 能够识别标签
属性操作
1 var divEle = document.getElementById("d1"); 2 divEle.setAttribute("age","18") #比较规范的写法 3 divEle.getAttribute("age") 4 divEle.removeAttribute("age") 5 6 // 自带的属性还可以直接.属性名来获取和设置,如果是你自定义的属性,是不能通过.来获取属性值的 7 imgEle.src 8 imgEle.src="..."
值操作
1 var inp = document.getElementById('username'); 2 inp.value; #查看值 3 inp.value = 'taibai'; #设置值 4 5 选择框: 6 <select name="city" id="city"> 7 <option value="1">上海</option> 8 <option value="2">北京</option> 9 <option value="3">深圳</option> 10 </select> 11 12 var inp = document.getElementById('city'); 13 inp.value; #查看值 14 inp.value = '1'; #设置值 15 16
class的操作
1 var d = document.getElementById('oo'); 2 d.classList; #获得这个标签的class属性的所有的值 3 d.classList.add('xx2'); #添加class值 4 d.classList.remove('xx2'); #删除class值 5 d.classList.contains('xx2'); #判断是否有某个class值,有返回true,没有返回false 6 d.classList.toggle('xx2'); #有就删除,没有就增加
css操作
1 var d = document.getElementById('oo'); 2 d.style.backgroundColor = 'deeppink'; 有横杠的css属性,写法要去掉横杠,并且横杠后面的单词首字母大写 3 d.style.height = '1000px'
事件
绑定事件的方式有两种
方式1:
1 <div id="d1" class="c1" onclick="f1();"></div> 2 3 <script> 4 function f1() { 5 var d = document.getElementById('d1'); 6 d.style.backgroundColor = 'yellow'; 7 } 8 9 </script>
方式2
1 <div id="d1" class="c1"></div> 2 3 var d = document.getElementById('d1'); 4 d.onclick = function () { 5 d.style.backgroundColor = 'yellow'; 6 } 7 8
事件里面的this
绑定方式1:
1 this表示当前标签对象 2 <div id="d1" class="c1" onclick="f1(this);"></div> 3 function f1(ths) { 4 // var d = document.getElementById('d1'); 5 // d.style.backgroundColor = 'yellow'; 6 ths.style.backgroundColor = 'yellow'; 7 8 var d = document.getElementById('d2'); 9 d.style.backgroundColor = 'yellow'; 10 }
方式2:
1 <div id="d1" class="c1"></div> 2 3 var d = document.getElementById('d1'); 4 d.onclick = function () { 5 this.style.backgroundColor = 'yellow'; 6 // d.style.backgroundColor = 'yellow'; //this表示当前标签对象 7 }
onblur和onfocus事件
1 var inp = document.getElementById('username'); 2 inp.onfocus = function () { 3 var d = document.getElementById('d1'); 4 d.style.backgroundColor = 'pink'; 5 }; 6 // onblur 失去光标时触发的事件 7 8 inp.onblur = function () { 9 var d = document.getElementById('d1'); 10 d.style.backgroundColor = 'green'; 11 };
onchange事件,域内容发生变化时触发
1 <select name="" id="jishi"> 2 <option value="1">太白</option> 3 <option value="2">alex</option> 4 <option value="3">沛齐</option> 5 6 </select> 7 8 // onchange事件,内容发生变化时触发的事件 9 var s = document.getElementById('jishi'); 10 s.onchange = function () { 11 //this.options select标签的所有的option标签 12 //this.selectedIndex被选中的标签在所有标签中的索引值 13 console.log(this.options[this.selectedIndex].innerText + '搓的舒服'); 14 } 15 16 17 用户名:<input type="text" id="username"> 18 19 //input标签绑定onchange事件 20 var inp = document.getElementById('username'); 21 inp.onchange = function () { 22 console.log(this.value); 23 }; 24