1.页面加载事件
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 100px;
height: 100px;
}
</style>
<script>
window.onload = function() {
var demo = document.getElementById("demo");
demo.style.backgroundColor = "red";
}
</script>
</head>
<body>
<div id="demo">
</div>
</body>
</html>
总结:window.onload用法详解: 网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式: 一.将脚本代码放在网页的底端,这样在运行脚本代码的时候,可以确保要操作的对象已经加载完成。 二.通过window.onload来执行脚本代码。 第一种方式感觉比较凌乱(其实推荐使用),往往我们需要将脚本代码放在一个更为合适的地方,那么window.onload方式就是一个良好的选择。window.onload是一个事件,当文档加载完成之后就会触发该事件,可以为此事件注册事件处理函数,并将要执行的脚本代码放在事件处理函数中,于是就可以避免获取不到对象的情况。
2.数组的常用操作
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 100px;
height: 100px;
background-color: #ffff00;
}
</style>
</head>
<body>
<div>
</div>
</body>
</html>
<script>
var arr = [1,3,5,7];
arr.push(9);
console.log(arr);
console.log(arr.push(11));
console.log(arr);
var arr1 = ["a","b","c"];
arr1.unshift("你好");
console.log(arr1);
console.log(arr1.unshift("今天"));
console.log(arr1);
var arrpop = [1,2,3,4,5];
arrpop.pop();
console.log(arrpop);
console.log(arrpop.pop());
console.log(arrpop);
var arrshift = ["a","b","c"];
console.log(arrshift.shift());
console.log(arrshift);
arrshift.shift();
console.log(arrshift);
var aa = [1,2,3];
var bb = ["a","b","c"];
console.log(aa.concat(bb));
console.log(aa);
console.log(bb);
var arrjoin = ["2015","12","2"];
console.log(arrjoin.join("-"));
console.log(arrjoin.join("+"));
console.log(arrjoin.join("*"));
console.log(arrjoin);
var txt = "2015-12-2";
var text = "中国 山东 威海 小渔村";
console.log(txt.split("-"));
console.log(text.split(" "));
</script>
2.1 获取className
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
}
</style>
</head>
<body>
<div>
<div></div>
</div>
<div></div>
<div></div>
<div class="two one"></div>
<div></div>
<div></div>
<div class="one"></div>
<div></div>
<div></div>
<div class="one"></div>
</body>
</html>
<script>
var ones = document.getElementsByClassName("one");
for(var i=0;i<ones.length;i++) {
ones[i].style.backgroundColor = "purple";
}
</script>
2.2 封装获取类名兼容性写法
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div class="demo nav test"></div>
<div></div>
<div class="demo"></div>
<div></div>
<div></div>
<div></div>
<div class="demo"></div>
<div></div>
<div></div>
<div></div>
</body>
</html>
<script>
function getClassName(classname) {
if(document.getElementsByClassName) {
return document.getElementsByClassName(classname);
}
var arr = [];
var dom = document.getElementsByTagName("*");
for(var i=0;i<dom.length;i++) {
var arrName = dom[i].className.split(" ");
for(var j=0;j<arrName.length;j++) {
if(arrName[j] == classname) {
arr.push(dom[i]);
}
}
}
return arr;
}
console.log(getClassName("demo").length);
</script>
总结:核心思想 就是把所有的标签都取过来, 然后一个一个的判断当前元素的类名是不是 classname
3. 节点
3.1 父节点
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo">
<div id="xiongda">
<div id="xionghaizi"></div>
</div>
</div>
</body>
</html>
<script>
var xionghai = document.getElementById("xionghaizi");
console.log(xionghai.parentNode.parentNode.id);
</script>
3.2 兄弟节点
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div>1
</div>
<div id="two">2
</div>
<div>3
</div>
<div>4
</div>
<div>5
</div>
<div>6
</div>
<div>7
</div>
<div>8
</div>
<div>9
</div>
<div>10
</div>
</body>
</html>
<script>
var two = document.getElementById("two");
var next = two.nextElementSibling || two.nextSibling;
next.style.backgroundColor = "purple";
</script>
3.3 第一个孩子
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="father">
<div class="son">123
</div>
<div class="son">123
</div>
<div class="son">123
</div>
<div class="son">123
</div>
<div class="son">123
</div>
</div>
</body>
</html>
<script>
var father = document.getElementById("father");
var first = father.firstElementChild || father.firstChild;
var last = father.lastElementChild || father.lastChild;
first.style.backgroundColor = "gray";
last.style.backgroundColor = "gray";
</script>
3.4 孩子们1
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo">
<div>1
</div>
<div>2
</div>
<div>3
</div>
</div>
</body>
</html>
<script>
var demo = document.getElementById("demo");
var nodes = demo.childNodes;
for(var i=0;i<nodes.length;i++) {
if(nodes[i].nodeType == 1) {
nodes[i].style.backgroundColor = "red";
}
}
</script>
3.5 孩子们2
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo">
<div>1
</div>
<div>2
</div>
<div>3
</div>
<div>3
</div>
</div>
</body>
</html>
<script>
var demo = document.getElementById("demo");
var child = demo.children;
alert(child.length);
child[0].style.backgroundColor = "red";
child[child.length-1].style.backgroundColor = "red";
</script>
4.dom操作
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo">
<div class="one"></div>
</div>
</body>
</html>
<script>
var demo = document.getElementById("demo");
var test = document.createElement("div");
demo.appendChild(test);
</script>
4.1 点击动态生成li
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button id="btn">点击
</button>
<ul id="demo">
</ul>
</body>
</html>
<script>
var btn =document.getElementById("btn");
var demo = document.getElementById("demo");
btn.onclick = function() {
var newLi = document.createElement("li");
demo.appendChild(newLi);
}
</script>
4.2 插入节点
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo">
<div id="xiongda"></div>
</div>
</body>
</html>
<script>
var demo = document.getElementById("demo");
var newDiv = document.createElement("div");
var xiongda = document.getElementById("xiongda");
demo.appendChild(newDiv);
var newSpan = document.createElement("span");
demo.insertBefore(newSpan,newDiv);
</script>
4.3 设置属性
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
.box {
width: 100px;
height: 100px;
background-color: pink;
}
</style>
</head>
<body>
<div id="demo" class="demo">
<div id="xiongda"></div>
</div>
</body>
</html>
<script>
var demo = document.getElementById("demo");
var newDiv = document.createElement("div");
var xiongda = document.getElementById("xiongda");
demo.appendChild(newDiv);
var newSpan = document.createElement("span");
demo.insertBefore(newSpan,newDiv);
newDiv.setAttribute("class","box");
demo.removeAttribute("class");
</script>
4.4 设置多个css属性cssText
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div></div>
</body>
</html>
<script>
var div = document.getElementsByTagName("div")[0];
div.style.cssText = "width:100px;height:100px; background-color:purple";
</script>
4.5 删除节点
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo">
<div id="one"></div>
</div>
</body>
</html>
<script>
var demo = document.getElementById("demo");
var one = document.getElementById("one");
demo.removeChild(one);
</script>
4.6 复制节点
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo">
<div id="damao"></div>
<div id="ermao"></div>
</div>
</body>
</html>
<script>
var demo = document.getElementById("demo");
demo.parentNode.appendChild(demo.cloneNode(true));
</script>
5.日期、定时器
5.1 声明日期函数
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
var date = new Date();
console.log(date);
console.log(date.getMonth()+1);
console.log(date.getFullYear());
</script>
5.2 日历
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
.date {
width: 200px;
height: 220px;
background-color: #369;
margin: 100px auto;
text-align: center;
padding-top:25px;
}
.date span {
color: white;
}
.date p {
width: 120px;
height: 120px;
background-color: darkorange;
margin:50px auto 0;
line-height: 120px;
font-size: 70px;
}
</style>
</head>
<body>
<div class="date" id="date">
<span></span>
<p></p>
</div>
</body>
</html>
<script>
var box = document.getElementById("date");
var date = new Date();
var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
box.children[1].innerHTML = date.getDate();
box.children[0].innerHTML = date.getFullYear() + "年" + (date.getMonth()+1) + "月" +
date.getDate() + "日 " + arr[date.getDay()];
</script>
5.3 定时器
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
setInterval("console.log('你好吗')",1000);
</script>
5.4 获取毫秒数的几种方法
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
var date = new Date();
console.log(date.getTime());
console.log(date.valueOf());
console.log(Date.now());
console.log(+new Date());
</script>
5.5 倒计时
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
font-size:30px;
color: red;
text-align: center;
}
</style>
</head>
<body>
<div id="demo"></div>
</body>
</html>
<script>
var demo = document.getElementById("demo");
var endTime = new Date("2018/12/12 17:30:00");
setInterval(timer,1000);
function timer() {
var nowDate = new Date();
var second = parseInt((endTime.getTime() - nowDate.getTime()) / 1000);
var d = parseInt(second / 3600 / 24);
var h = parseInt(second / 3600 % 24);
console.log(h)
var m = parseInt(second / 60 % 60);
console.log(m);
var s = second % 60;
总结:周期取余得到不足的数。如以总的小时%24得出不足的小时的数量
console.log(s);
d<10 ? d = "0" + d : d;
h<10 ? h = "0" + h : h;
m<10 ? m = "0" + m : m;
s = s<10 ? "0"+s : s;
function flag(obj) {
return obj = obj<10 ? "0" + obj : obj;
}
demo.innerHTML = "距离抢购还剩下" + d + "天" + h + "小时" + m + "分" + s + "秒";
demo.innerHTML = "距离抢购还剩下" + flag(d) + "天" + h + "小时" + m + "分" + s + "秒";
}
</script>
6.运算符
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
console.log(0||1);
console.log(1||0);
console.log(1||5);
console.log(5||1);
var a = 0 || 1 || 2;
var b = 1 || 0 || 3;
console.log(a),console.log(b);
var a = 1+4&&3;
var b = 0&& 3+1;
var c= 1 || 2 && 5-1;
alert(a),alert(b),alert(c);
</script>
7.字符串
7.1 转换成字符串
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
var num = 10;
console.log(typeof typeof num);
console.log("num");
console.log(typeof (num+ ""));
console.log(typeof String(num));
var test = 19;
console.log(typeof (test.toString()));
var demo = 10;
console.log(demo.toString(2));
</script>
7.2根据位置返回字符
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
var txt = "abcdefg";
alert(txt.charAt(3));
var demo = "今天是周末";
alert(demo.charAt(2));
alert(txt.charCodeAt(3));
alert(demo.charCodeAt(2));
</script>
7.3 检测字符串长度
<script>
var txt = "what are you 伐木累!";
function getStringlenght(string){
var code = 0;
var len = 0;
for(var i =0;i<string.length;i++){
code = string.charCodeAt(i);
if(code>=0 && code<=127){
len++;
}else{
len + =2 ;
}
}
return len;
}
console.log(getStringLenght(txt));
</script>
7.3根据字符串返回位置
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
var txt = "今天是周末是很开心的一天啊";
alert(txt.indexOf("是"));
alert(txt.lastIndexOf("是"));
</script>
7.4 url编码和解码
为什么要进行url编码:http://www.cnblogs.com/jerrysion/p/5522673.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
var url = "localhost:itcast.cn? name=andy";
var str = encodeURIComponent(url);
console.log(str);
console.log(decodeURIComponent(str));
</script>
7.4 截取字符串
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script>
window.onload = function() {
var div1 = document.getElementById("div1").innerHTML;
var div2 = document.getElementById("div2").innerHTML;
function onButtonClick(id,txt) {
document.getElementById(id).onclick = function() {
this.nextSibling.innerHTML = txt;
}
}
onButtonClick("btn1",div1.concat(div2));
onButtonClick("btn2",div1.slice(3));
onButtonClick("btn3",div1.slice(3,6));
onButtonClick("btn4",div1.slice(-1));
onButtonClick("btn5",div1.substr(3));
onButtonClick("btn6",div1.substr(3,6));
onButtonClick("btn7",div1.substr(-1));
onButtonClick("btn8",div1.substr(div1.length-1,1));
onButtonClick("btn9",div1.substring(3));
onButtonClick("btn10",div1.substring(3,6));
onButtonClick("btn11",div1.substring(6,3));
onButtonClick("btn12",div1.substring(-1));
}
</script>
</head>
<body>
<div id="div1">my name is andy!
</div>
<div id="div2">what's your name?
</div>
<button id="btn1">concat
</button><span></span> <br/>
<button id="btn2">slice(3)
</button><span></span> <br/>
<button id="btn3">slice(3,6)
</button><span></span> <br/>
<button id="btn4">slice(-1)
</button><span></span> <br/>
<button id="btn5">substr(3)
</button><span></span> <br/>
<button id="btn6">substr(3,6)
</button><span></span> <br/>
<button id="btn7">substr(-1)
</button><span></span> <br/>
<button id="btn8">substr(-1兼容写法)
</button><span></span> <br/>
<button id="btn9">substring(3)
</button><span></span> <br/>
<button id="btn10">substring(3,6)
</button><span></span> <br/>
<button id="btn11">substring(6,3)
</button><span></span> <br/>
<button id="btn12">substring(-1)
</button><span></span> <br/>
</body>
</html>
7.5 保留小数
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
<script>
var PI = 3.1415;
console.log(PI.toFixed(2));
</script>
7.6转换大小写
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
请输入:
<input type="text" id="txt"/> <button id="btn">发布
</button>
<h1 id="big">输入大标题
</h1>
<span id="small">小标题
</span>
</body>
</html>
<script>
function $(id) {return document.getElementById(id);}
$("btn").onclick = function() {
$("big").innerHTML = $("txt").value.toUpperCase();
$("small").innerHTML = $("txt").value.toLowerCase()
}
</script>
7.8 验证上传文件
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<input type="file" name="" id="file"/><span></span>
</body>
</html>
<script>
var file = document.getElementById("file");
file.onchange = function() {
var path = this.value;
var suffix = path.substr(path.lastIndexOf(".")).toUpperCase();
if(suffix == ".JPG" || suffix == ".JPEG" || suffix == ".PNG") {
this.nextSibling.innerHTML = "格式正确";
}
else {
this.nextSibling.innerHTML = "格式不正确";
}
}
</script>
8.简单模拟jquery$选择器
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<div id="demo">1
</div>
<div>2
</div>
<div>2
</div>
<div class="test">3
</div>
<div>2
</div>
<div class="test">3
</div>
<div>2
</div>
<div>2
</div>
<div>2
</div>
<div>2
</div>
</body>
</html>
<script>
function getClassName(classname) {
if(document.getElementsByClassName) {
return document.getElementsByClassName(classname);
}
var arr = [];
var dom = document.getElementsByTagName("*");
for(var i=0;i<dom.length;i++) {
var arrName = dom[i].className.split(" ");
for(var j=0;j<arrName.length;j++) {
if(arrName[j] == classname) {
arr.push(dom[i]);
}
}
}
return arr;
}
function $(str) {
var s = str.charAt(0);
var ss = str.substr(1);
switch(s) {
case "#":
return document.getElementById(ss);
break;
case ".":
return getClassName(ss);
break;
default :
return document.getElementsByTagName(str);
}
}
$("#demo").style.backgroundColor = "red";
for(var i=0;i<$(".test").length;i++)
{
$(".test")[i].style.backgroundColor = 'purple';
}
console.log($("div").length);
</script>