01-Date定义和体验.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//第一种
var date1 = new Date();
console.log(date1);
//第二种
var date2 = new Date("2016/09/06 00:00:00");
console.log(date2);
//后两种兼容性不好,不推荐使用
//第三种
var date3 = new Date('Wed Jan 27 2016 12:00:00 GMT+0800 (中国标准时间)');
//第四种
var date4 = new Date(2016, 1, 27);
console.log(date1.getDate() ) //获取日 1-31
console.log(date1.getDay () ) //获取星期 0-6(0代表周日)
console.log(date1.getMonth () ) //获取月 0-11(1月从0开始)
console.log(date1.getFullYear () ) //获取完整年份(浏览器都支持)
console.log(date1.getHours () ) // 获取小时 0-23
console.log(date1.getMinutes () ) //获取分钟 0-59
console.log(date1.getSeconds () ) //获取秒 0-59
console.log(date1.getMilliseconds () ) //获取毫秒 (1s = 1000ms)
console.log(date1.getTime () ) //返回累计毫秒数(从1970/1/1午夜)
//获取当前时间距离1970/01/01的毫秒值
// var date11 = Date.now();
// var date22 = +new Date();
// var date33 = new Date().getTime();
// var date44 = new Date().valueOf();
//
// console.log(date11);
// console.log(date22);
// console.log(date33);
// console.log(date44);
</script>
</body>
</html>
02-模拟日历.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 800px;
margin: 200px auto;
color: red;
text-align: center;
font: 600 30px/30px "simsun";
}
</style>
</head>
<body>
<div></div>
<script>
//模拟日历
//需求:每天打开这个页面都能定时显示年月日和星期几
//步骤:(创建一个当前日期的日期对象,然后获取其中的年月日和星期,赋值给div)
//1.创建一个当前日期的日期对象
//2.然后获取其中的年月日和星期
//3.赋值给div
//1.创建一个当前日期的日期对象
var date = new Date();
//2.然后获取其中的年月日和星期
var year = date.getFullYear();
var month = date.getMonth();
var hao = date.getDate();
var week = date.getDay();
// console.log(year+" "+month+" "+hao+" "+week);
//3.赋值给div
var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
var div = document.getElementsByTagName("div")[0];
div.innerText = "今天是:"+year+"年"+(month+1)+"月"+hao+"日 "+arr[week];
</script>
</body>
</html>
03-苹果发布会倒计时.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 1210px;
margin: 200px auto;
color: red;
text-align: center;
font: 600 30px/30px "simsun";
}
</style>
</head>
<body>
<div></div>
<script>
var div=document.getElementsByTagName("div")[0];
var timer = setInterval(fn,1);
function fn(){
var nowtime = new Date();
var future = new Date("2018/09/05 18:23:15");
var timeSum = future.getTime() - nowtime.getTime();
var day = parseInt(timeSum/1000/60/60/24);
var hour = parseInt(timeSum/1000/60/60%24);
var minu = parseInt(timeSum/1000/60%60);
var sec = parseInt(timeSum/1000%60);
var millsec = parseInt(timeSum%1000);
day=day<10?"0"+day:day;
hour=hour<10?"0"+hour:hour;
minu=minu<10?"0"+minu:minu;
sec=sec<10?"0"+sec:sec;
if(millsec<10){
millsec="00"+millsec;
}else if(millsec<100){
millsec="0"+millsec;
}
//
// console.log(day);
// console.log(parseInt(timeSum/1000/60/60/24));
if(timeSum<0){
div.innerHTML="距离苹果发布会还有00天00小时00分00秒000毫秒";
clearInterval(timer);
return;
}
div.innerHTML="距离苹果发布会还有"+day+"天"+hour+"小时"+minu+"分"+sec+"秒"+millsec+"毫秒";
}
</script>
</body>
</html>
04-String内置对象体验.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//简单数据类型无法绑定属性和方法
var str = "abc";
var strObj = new String("abc");
strObj.aaa = 111;
console.log(strObj);
console.log(typeof strObj);
console.log(strObj.aaa);
str.aaa = 111;
console.log(str.aaa);
console.log(str.length);
console.log(str.indexOf("c"));
</script>
</body>
</html>
05-给索引查字符.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var str = new String("abcd");
// console.log(str);
// for(var i=0;i<str.length;i++){
// console.log(str.charAt(i));
// }
// console.log(str.charAt(0));
// console.log(str.charAt(1));
// console.log(str.charAt(2));
// console.log(str.charAt(3));
//返回unicode中的码表值。
console.log(str.charCodeAt(0));
</script>
</body>
</html>
06-打印字符串的站位长度.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
// sort(); 底层用到了charCodeAt();
var str = "I love my country!我你爱中国!";
//"我爱你":一汉字占两个字符位。
//需求:求一个字符串占有几个字符位。
//思路;如果是英文,站一个字符位,如果不是英文占两个字符位。
//技术点:判断该字符是否在0-127之间。(在的话是英文,不在是非英文)
alert(getZFWlength(str));
alert(str.length);
function getZFWlength(string){
//定义一个计数器
var count = 0;
for(var i=0;i<string.length;i++){
//对每一位字符串进行判断,如果Unicode编码在0-127,计数器+1;否则+2
if(string.charCodeAt(i)<128 && string.charCodeAt(i)>=0 ){
count++;
}else{
count+=2;
}
}
return count;
}
</script>
</body>
</html>
07-给字符查索引.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var str = "abcdea";
//给字符查索引(索引值为0,说明字符串以查询的参数为开头)
console.log(str.indexOf("c"));
console.log(str.lastIndexOf("c"));
console.log(str.indexOf("a"));
console.log(str.lastIndexOf("a"));
//了解;数据传递的时候经常需要通过编码后在传递,接收后还需要反编译回来。
var url = "http://www.itcast.cn?username='aaa'&password='123'";
console.log(encodeURIComponent(url));
console.log(decodeURIComponent(encodeURIComponent(url)));
</script>
</body>
</html>
08-字符串连接和截取.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//concat 连接两个字符串返回一个新字符串,并且不会被修改
// var str1 = "abc";
// var str2 = "123";
// var str3 = str1.concat(str2);
// console.log(str1);
// console.log(str2);
// console.log(str3);
var str = "I love my family!";
console.log(str);
// //slice(); 跟剧索引值和索引值截取字符串
// console.log(str.slice(2));//从索引截取到最后
// console.log(str.slice(2,5));//从索引截,包左不包右
// console.log(str.slice(-3));//后几个
// console.log(str.slice(5,2));//空字符串
// //substr(); 跟剧索引值和长度值截取字符串
// console.log(str.substr(2));//从索引截取到最后
// console.log(str.substr(2,6));//从索引截,长度个字符串
// console.log(str.substr(-3));//后几个
// //substring(); 跟剧索引值和索引值截取字符串
console.log(str.substring(2)); //从索引截取到最后
console.log(str.substring(2,5));//从索引截,长度个字符串
console.log(str.substring(-1)); //全部截取
console.log(str.substring(5,2));//只能调换
</script>
</body>
</html>
09-特殊方法.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//去除前后空格,trim();
// var str1 = " a b c ";
// console.log(str1);
// console.log(str1.trim());
//replace()替换
// var str2 = "Today is fine day,today is fine day a!!!"
// console.log(str2);
// console.log(str2.replace(/today/gi,"tomorrow"));
//字符串变数组split(); 无参,是把字符串作为一个元素添加进数组中。空字符串,分隔字符串中每一个字符,分别添加进入数组中
//指定字符分隔数组:特殊符号将不会出现在数组的任意一个元素中
var str3 = "关羽|张飞|刘备";
console.log(str3);
console.log(str3.split("|"));
</script>
</body>
</html>
10-大小写和创建标签(奇葩操作).html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<input type="file"/>
<script>
var str = "abcdEFG";
//转换成小写
console.log(str.toLowerCase());
//转换成大写
console.log(str.toUpperCase());
//校验上传文件格式(图片img/png/jpg/gif)(查找最后一个.截取到最后,判断value属性值)
// document.getElementsByTagName("input")[0].onchange = function () {
// alert(this.value);
// }
var str = "你好";
console.log(str.anchor())
console.log(str.big())
console.log(str.sub())
console.log(str.sup())
console.log(str.link("http://www.baidu.com"));
console.log(str.bold())
</script>
</body>
</html>
11-字符串案例.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
// 截取字符串"我爱你中国,我亲爱的母亲",中的"中国,我亲爱的";
var str1 = "我爱你中国,我亲爱的母亲";
var index1 = str1.indexOf("中");
var index2 = str1.indexOf("的");
console.log(str1.slice(index1,index2+1));
// "abcoefoxyozzopp"查找字符串中所有o出现的位置
var str2 = "abcoefoxyozzopp";
for(var i=0;i<str2.length;i++){
//如果指定位置的符号=== "o"
//str2[i]
if( str2.charAt(i)==="o"){
console.log(i);
}
}
// 把字符串中所有的o替换成!
console.log(str2);
console.log(str2.replace(/o/g,"!"));
// 判断一个字符串中出现次数最多的字符,统计这个次数
//定义一个json,然后判断json中是够有该属性,如果有该属性,那么值+1;否则创建一个该属性,并赋值为1;
var json = {};
for(var i=0;i<str2.length;i++){
//判断:如果有该属性,那么值+1;否则创建一个该属性,并赋值为1;
var key = str2.charAt(i);
if(json[key] === undefined){
json[key] = 1;
}else{
json[key] += 1;
}
}
console.log(json);
//获取json中属性值最大的选项
// var maxKey = "";
// var maxValue = 0;
// for(var k in json){
//// if(maxKey == ""){
//// maxKey = k;
//// maxValue = json[k];
//// }else{
// if(json[k]>maxValue){
// maxKey = k;
// maxValue = json[k];
// }
//// }
// }
// console.log(maxKey);
// console.log(maxValue);
</script>
</body>
</html>
12-获取节点元素的封装(简单版).html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
margin: 5px;
}
</style>
</head>
<body>
<div></div>
<div class="box"></div>
<div id="box"></div>
<div class="box"></div>
<div></div>
<script>
//需求:一个方法,包含三种获取元素节点的功能。通过传递参数的不同,来决定使用哪种获取方法。
//例如: "ibox": getElementById();
//例如: "cbox": getElementsByClassName();
//例如: "tbox": getElementsByTagName();
//化简:使用类似css获取的方式表明使用哪种方式来获取:
// "#box" getElementById();
// ".box" getElementsByClassName();
// "div" getElementsByTagName();
//验证:
getEle("#box").style.backgroundColor = "red";
var claArr = getEle(".box");
for(var i=0;i<claArr.length;i++){
claArr[i].style.backgroundColor = "yellow";
}
var divArr = getEle("div");
for(var i=0;i<divArr.length;i++){
divArr[i].style.border = "2px solid #000";
}
//思路:封装一个方法,然后判断第一个字符,如果是#用id,如果是.用className,否则用tagName
//步骤:
//1.封装一个方法,获取参数的第一个字符
//2.判断第一个字符是#走第一个逻辑,是.走第二个逻辑,如果都不是那么走最后一个逻辑
//3.隐藏:
//1.封装一个方法,获取参数的第一个字符
function getEle(str){
//2.判断第一个字符是#走第一个逻辑,是.走第二个逻辑,如果都不是那么走最后一个逻辑
var str1 = str.charAt(0);
if(str1==="#"){
//3.隐藏:
//返回获取的元素。(因为传递过来的值带有#,所以我们要从第二项开始截取并搜索)
return document.getElementById(str.slice(1));
}else if(str1 === "."){
return document.getElementsByClassName(str.slice(1));
}else{
return document.getElementsByTagName(str);
}
}
</script>
</body>
</html>
13-获取节点元素的封装(最终版版).html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
margin: 5px;
}
</style>
</head>
<body>
<div></div>
<div class="box"></div>
<div id="box"></div>
<div class="box"></div>
<div></div>
<script>
$("#box").style.backgroundColor = "red";
var claArr = $(".box");
for(var i=0;i<claArr.length;i++){
claArr[i].style.backgroundColor = "yellow";
}
var divArr = $("div");
for(var i=0;i<divArr.length;i++){
divArr[i].style.border = "2px solid #000";
}
function $(str){
var str1 = str.charAt(0);
if(str1==="#"){
return document.getElementById(str.slice(1));
}else if(str1 === "."){
return document.getElementsByClassName(str.slice(1));
}else{
return document.getElementsByTagName(str);
}
}
</script>
</body>
</html>
14-Math对象.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//
// var num = 1.4;
var num = -0.6;
console.log(Math.abs(num)); //取绝对值
console.log(Math.floor(num)); //向下取整 //向小取
console.log(Math.ceil(num)); //向上取整 //向大取
console.log(Math.round(num)); //四舍五入取整 //正数四舍五入,负数五舍六入
console.log(Math.random()); //随机数0-1
</script>
</body>
</html>
15-事件的概述.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button>赋诗</button>
<script>
var btn = document.getElementsByTagName("button")[0];
//第一种事件绑定的方法容易被层叠。
// btn.onclick = function () {
// console.log("九尺龙泉万卷书,上天生我意何如。");
// }
//
// btn.onclick = function () {
// console.log("不能报国平天下,枉为男儿大丈夫。");
// }
//addEventListener: 事件监听器。 原事件被执行的时候,后面绑定的事件照样被执行
//第二种事件绑定的方法不会出现层叠。(更适合团队开发)
btn.addEventListener("click",fn1);
btn.addEventListener("click",fn2);
function fn1(){
console.log("九尺龙泉万卷书,上天生我意何如。");
}
function fn2(){
console.log("不能报国平天下,枉为男儿大丈夫。");
}
//调用这是事件源,参数1事件名(不带on) ,参数2事件名(执行函数) 参数3事件名(捕获或者冒泡)
</script>
</body>
</html>
16-事件监听原理.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button>赋诗</button>
<script>
var btn = document.getElementsByTagName("button")[0];
// btn.addEventListener("click",fn1);
// btn.addEventListener("click",fn2);
fn("click",fn1,btn);
fn("click",fn2,btn);
fn("click",fn3,btn);
function fn1(){
console.log("九尺龙泉万卷书,上天生我意何如。");
}
function fn2(){
console.log("不能报国平天下,枉为男儿大丈夫。");
}
function fn3(){
console.log("111111。");
}
//原理(了解)(自己封装一个)(click)
function fn(str,fn,ele){
//判断位置要注意:如果进入绑定事件本身,那么该事件已经本绑定了
//所以获取旧的事件必须在新的事件绑定之前
var oldEvent = ele["on"+str];
ele["on"+str] = function () {
//不能直接执行函数,因为我们还不知道以前有没有绑定我同样的事件
//进行判断,如果以前有过绑定事件,那么把以前的执行完毕在执行现在的事件,如果没有就直接执行
//如果没有被定义过事件该事件源的该事件属性应该是null对应的boolean值是false
//如果已经定义过事件该事件源的该事件属性应该是function本身对应的boolean值是true
if(oldEvent){
//因为oldEvent本身他就是函数本身,那么后面加一个();就是执行函数
oldEvent();
fn();
}else{
//没有绑定过事件
fn();
}
}
}
</script>
</body>
</html>
17-事件添加的兼容写法.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button>赋诗</button>
<script>
var btn = document.getElementsByTagName("button")[0];
//火狐谷歌IE9+支持addEventListener
// btn.addEventListener("click",fn1);
// btn.addEventListener("click",fn2);
//IE678支持attachEvent
// btn.attachEvent("onclick",fn1);
// btn.attachEvent("onclick",fn2);
//兼容写法
EventListen = {
addEvent: function (ele,fn,str) {
//通过判断调用的方式兼容IE678
//判断浏览器是否支持该方法,如果支持那么调用,如果不支持换其他方法
if(ele.addEventListener){
//直接调用
ele.addEventListener(str,fn);
}else if(ele.attachEvent){
ele.attachEvent("on"+str,fn);
}else{
//在addEventListener和attachEvent都不存在的情况下,用此代码
ele["on"+str] = fn;
}
}
}
EventListen.addEvent(btn,fn1,"click")
EventListen.addEvent(btn,fn2,"click")
console.log(EventListen);
function fn1(){
console.log("九尺龙泉万卷书,上天生我意何如。");
}
function fn2(){
console.log("不能报国平天下,枉为男儿大丈夫。");
}
</script>
</body>
</html>
18-事件解绑的兼容写法.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button>赋诗</button>
<script>
var btn = document.getElementsByTagName("button")[0];
EventListen = {
addEvent: function (ele,fn,str) {
//通过判断调用的方式兼容IE678
//判断浏览器是否支持该方法,如果支持那么调用,如果不支持换其他方法
if(ele.addEventListener){
//直接调用
ele.addEventListener(str,fn);
}else if(ele.attachEvent){
ele.attachEvent("on"+str,fn);
}else{
//在addEventListener和attachEvent都不存在的情况下,用此代码
ele["on"+str] = fn;
}
},
removeEvent: function (ele,fn,str) {
if(ele.removeEventListener){
ele.removeEventListener(str,fn);
}else if(ele.detachEvent){
ele.detachEvent("on"+str,fn);
}else{
ele["on"+str] = null;
}
}
}
// btn.addEventListener("click",fn);
EventListen.addEvent(btn,fn,"click");
EventListen.removeEvent(btn,fn,"click");
function fn(){
alert(1);
}
//第一种
// btn.onclick = function () {
// alert(1);
// }
// btn.addEventListener("click",fn);
// btn.attachEvent("onclick",fn);
// btn.onclick = null;
//第二种
// btn.removeEventListener("click",fn);
// btn.detachEvent("onclick",fn);
</script>
</body>
</html>
网友评论