事件流:
dom2级事件流
三个阶段:
1,捕获阶段
2,处于目标节点
3,冒泡阶段
event.prventDefaut
event.stopPropagattion
return false
2,固定导航栏
位置信息
offset().stop
scrollTop()
scroll(fn)
3,数据流
单向数据绑定data ===>view
双向数据绑定data===>view==>data
4,单双击的问题 300ms 加定时器
5,事件对象: event
event.target:目标对象 吃蛋糕的人
event.currentTarget:当前对象 this 谁动了蛋糕
6,jquery事件
click:单击事件
mouseover|mouseout 穿过被选元素或被选的子元素
mouseenter|mouseleave 只穿过被选元素
js中的oninput:实时监听input输入框的输入
watcher?
from 表单的submit事件
阻止from表单的默认行为
事件的绑定和解绑 bind 和 unbind 在解绑之后不会执行
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div>123</div> <button>解绑</button> <script src="jquery.js"></script> <script> $(function () { $('div').bind('click',function () { console.log(this.innerText); }) $('button').click(function(event) { $('div').unbind(); }); }) </script> </body> </html>
事件的委托:解决事件在后输入后不能执行的情况:以下事件为解决li的后加入执行click
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <ul> <li>alex</li> <li>tailiang</li> </ul> <script src="jquery.js"></script> <script> $(function () { // $('ul li').click(function(event) { // Act on the event // alert($(this).text()); // }); // 事件委托去处理 $('ul').on('click','li',function () { // body... alert($(this).text()); }) // bind on // 未来发生的事情 $('ul').append('<li class="a">俊杰</li>'); }) </script> </body> </html>
XMLHttpRequest:流程需要记住
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <button id='btn'>发送ajax</button> <script src="jquery.js"></script> <script> //(1)创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 0 初始化操作 之创建XMLHttpRequest对象 console.log(xhr.readyState); // 2.状态机 xhr.onreadystatechange = function (event) { console.log(xhr.readyState); switch (xhr.readyState) { case 4: //响应数据成功 console.log(xhr.responseText); break; default: // statements_def break; } } document.getElementById('btn').onclick = function () { // 3.打开网址 xhr.open('GET','http://localhost:8800/course',true); //4.发送请求体的数据 xhr.send(); } </script> </body> </html>
jq中的aiax代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input type="text"> <button>提交</button> <div class="box"> <ul> </ul> </div> <div> </div> <script src="jquery.js"></script> <script> /* $.ajax({ url:'http://localhost:8800/course', type:'get', dataType:'json', success:function (data) { console.log(data); $('body').html(data.name); }, error:function (err) { console.log(err) } }); */ $('button').click(function(event) { var nameVal = $('input').val(); $.ajax({ url:'http://localhost:8800/create', type:'post', dataType:'json', data:{ name:nameVal }, success:function (data) { console.log(data); // $('ul').empty(); data.forEach(function (item,index) { console.log(item); $('<li></li>').appendTo('.box ul').text(item.name); }) }, error:function (err) { console.log(err) } }); }); </script> </body> </html>
js中的农历日历:网上找的
$(function () { var CalendarData=new Array(100); var madd=new Array(12); var tgString="甲乙丙丁戊己庚辛壬癸"; var dzString="子丑寅卯辰巳午未申酉戌亥"; var numString="一二三四五六七八九十"; var monString="正二三四五六七八九十冬腊"; var weekString="日一二三四五六"; var sx="鼠牛虎兔龙蛇马羊猴鸡狗猪"; var cYear,cMonth,cDay,TheDate; CalendarData = new Array(0xA4B,0x5164B,0x6A5,0x6D4,0x415B5,0x2B6,0x957,0x2092F,0x497,0x60C96,0xD4A,0xEA5,0x50DA9,0x5AD,0x2B6,0x3126E, 0x92E,0x7192D,0xC95,0xD4A,0x61B4A,0xB55,0x56A,0x4155B, 0x25D,0x92D,0x2192B,0xA95,0x71695,0x6CA,0xB55,0x50AB5,0x4DA,0xA5B,0x30A57,0x52B,0x8152A,0xE95,0x6AA,0x615AA,0xAB5,0x4B6,0x414AE,0xA57,0x526,0x31D26,0xD95,0x70B55,0x56A,0x96D,0x5095D,0x4AD,0xA4D,0x41A4D,0xD25,0x81AA5,0xB54,0xB6A,0x612DA,0x95B,0x49B,0x41497,0xA4B,0xA164B, 0x6A5,0x6D4,0x615B4,0xAB6,0x957,0x5092F,0x497,0x64B, 0x30D4A,0xEA5,0x80D65,0x5AC,0xAB6,0x5126D,0x92E,0xC96,0x41A95,0xD4A,0xDA5,0x20B55,0x56A,0x7155B,0x25D,0x92D,0x5192B,0xA95,0xB4A,0x416AA,0xAD5,0x90AB5,0x4BA,0xA5B, 0x60A57,0x52B,0xA93,0x40E95); madd[0]=0; madd[1]=31; madd[2]=59; madd[3]=90; madd[4]=120; madd[5]=151; madd[6]=181; madd[7]=212; madd[8]=243; madd[9]=273; madd[10]=304; madd[11]=334; function GetBit(m,n){ return (m>>n)&1; } function e2c(){ TheDate= (arguments.length!=3) ? new Date() : new Date(arguments[0],arguments[1],arguments[2]); var total,m,n,k; var isEnd=false; var tmp=TheDate.getYear(); if(tmp<1900){ tmp+=1900; } total=(tmp-1921)*365+Math.floor((tmp-1921)/4)+madd[TheDate.getMonth()]+TheDate.getDate()-38; if(TheDate.getYear()%4==0&&TheDate.getMonth()>1) { total++; } for(m=0;;m++){ k=(CalendarData[m]<0xfff)?11:12; for(n=k;n>=0;n--){ if(total<=29+GetBit(CalendarData[m],n)){ isEnd=true; break; } total=total-29-GetBit(CalendarData[m],n); } if(isEnd) break; } cYear=1921 + m; cMonth=k-n+1; cDay=total; if(k==12){ if(cMonth==Math.floor(CalendarData[m]/0x10000)+1){ cMonth=1-cMonth; } if(cMonth>Math.floor(CalendarData[m]/0x10000)+1){ cMonth--; } } } function GetcDateString(){ var tmp=""; // tmp+=tgString.charAt((cYear-4)%10); // tmp+=dzString.charAt((cYear-4)%12); // tmp+="("; // tmp+=sx.charAt((cYear-4)%12); // tmp+=")年 "; if(cMonth<1){ tmp+="(闰)"; tmp+=monString.charAt(-cMonth-1); }else{ tmp+=monString.charAt(cMonth-1); } tmp+="月"; tmp+=(cDay<11)?"初":((cDay<20)?"十":((cDay<30)?"廿":"三十")); if (cDay%10!=0||cDay==10){ tmp+=numString.charAt((cDay-1)%10); } return tmp; } function GetLunarDay(solarYear,solarMonth,solarDay){ //solarYear = solarYear<1900?(1900+solarYear):solarYear; if(solarYear<1921 || solarYear>2020){ return ""; }else{ solarMonth = (parseInt(solarMonth)>0) ? (solarMonth-1) : 11; e2c(solarYear,solarMonth,solarDay); return GetcDateString(); } } var D=new Date(); var yy=D.getFullYear(); var mm=D.getMonth()+1; var dd=D.getDate(); var ww=D.getDay(); var ss=parseInt(D.getTime() / 1000); if (yy<100) yy="19"+yy; function showCal(){ return GetLunarDay(yy,mm,dd); } $(".lunar-festival").text(`农历 ${showCal()}`); });
对时间的处理
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) // 所以获取当前月份是myDate.getMonth()+1; myDate.getDate(); //获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,0代表星期天) myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数) myDate.getHours(); //获取当前小时数(0-23) myDate.getMinutes(); //获取当前分钟数(0-59) myDate.getSeconds(); //获取当前秒数(0-59) myDate.getMilliseconds(); //获取当前毫秒数(0-999) myDate.toLocaleDateString(); //获取当前日期 var mytime=myDate.toLocaleTimeString(); //获取当前时间 myDate.toLocaleString( ); //获取日期与时间 ========================================================================== JS获取当前时间戳的方法-JavaScript 获取当前毫秒时间戳有以下三种方法: var timestamp =Date.parse(new Date()); 结果:1280977330000 //不推荐; 毫秒改成了000显示 var timestamp =(new Date()).valueOf(); 结果:1280977330748 //推荐; var timestamp=new Date().getTime(); 结果:1280977330748 //推荐; js中单独调用new Date(); 显示这种格式 Mar 31 10:10:43 UTC+0800 2012 但是用new Date() 参与计算会自动转换为从1970.1.1开始的毫秒数 -------------------------------------------------------------------------------------------------- 将字符串形式的日期转换成日期对象 var strTime="2011-04-16"; //字符串日期格式 var date= new Date(Date.parse(strTime.replace(/-/g, "/"))); //转换成Data(); -------------------------------------------------------------------------------------------------- new Date() ; //参数可以为整数; 也可以为字符串; 但格式必须正确 new Date(2009,1,1); //正确 new Date("2009/1/1"); //正确 new Date("2009-1-1"); //错误 new Date( year, month, date, hrs, min, sec) 按给定的参数创建一日期对象 参数说明: year的值为:需设定的年份-1900。例如需设定的年份是1997则year的值应为97,即1997-1900的结果。所以Date中可设定的年份最小为1900; month的值域为0~11,0代表1月,11表代表12月; date的值域在1~31之间; hrs的值域在0~23之间。从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12; min和sec的值域在0~59之间。 例 Date day=new Date(11,3,4); //day中的时间为:04-Apr-11 12:00:00 AM 另外,还可以给出不正确的参数。 例 设定时间为1910年2月30日,它将被解释成3月2日。 Date day=new Date(10,1,30,10,12,34); System.out.println("Day's date is:"+day); //打印结果为:Day's date is:Web Mar 02 10:13:34 GMT+08:00 1910 --------------------------------------------------------------------------------------------------
转星期
var mydate = new Date(day1.date.replace('-',',')).getDay(); var mydateone = ["日","一","二","三","四","五","六"]; for(var i=0;i<7;i++){ if(mydate == i){ mydate = mydateone[i] } }
XMLHttpRequest对象属性(接收并显示当前状态)
1.readySate-记录返回请求的状态
。0-为初始化:对象已经建立,单位初始化,open方法还未调用;
。1-初始化:对象已经建立,但还未调用send方法发送请求;
。2-发送数据:send方法已调用,但HTTP头未知;
。3-数据传输中:已经接受部分数据,但响应不完全;
。4-完成:数据接受完成,此时才可以获取完整的返回数据
2.responseText-接收客户端的HTTP响应的文本内容
。只读
。当readySate为1/2,responseText值是一个空字符串;
。当readyState为3,响应信息正在接受还未完成;
。当readyState为4,表示可以响应信息已经接收完成
。xmlHttp默认响应数据编码为UTF-8
3.responseXML-在send()执行后,将返回的信息格式化为XML Document对象
。Content-Type指定的MIME类型应该为text/HTML
。如果Content-Type不包含这种类型,responseXML在接收时将会得到一个null值
4.status-在send()执行后,可使用status读取事物状态
。长整型数据
。返回当前请求的HTTP的状态码
。只有当readyState为3或4时才使用该属性,否则读取status会发生错误
。100-客户必须继续发送请求
。200-交易成功
。400-错误请求
。403-请求不允许
。404-没有发现文件、查询、URL
。500-服务器内部错误
。502服务器暂时不可使用
。505-服务器不支持或拒绝不支持请求头中的HTTP版本
5.statusText-send()执行后,可通过statusText读取事物状态
。返回当前HTTP请求的状态行
。只有当readyState为3或4时才可使用该属性,否则读取state会发生错误
6.Onreadystatechange-readyState发生变化时所要执行的操作
。通常将处理函数名称赋予onreadystatechange来为XMLHttpRequest对象指定事件处理
。在事件处理函数中根据readyState的状态值进行相应的处理