一、經過id獲取頁面上的元素javascript
document.getElementById(); //經過這個方法就能夠獲取到頁面上的元素css
------------------------------------------------------html
使用document.getElementById()方法的時候,若是使用了未定義的id會報錯(有可能代碼裏確實有這個id,可是HTML代碼是從上到下執行的,而在執行 document.getElementById()方法的時候尚未執行到建立id的代碼),因此爲了不這種錯誤,document.getElementById()方法要麼用在最後,要麼爲window.onload註冊一個事件處理程序。當執行該事件的時候,頁面已經加載完了,在事件中使用document.getElementById()方法就不會報錯了。java
window.onload=function(){
};c++
二、爲元素對象註冊事件正則表達式
在<body></body>標籤中建立一個按鈕數組
<input id="btn1" type="button" name="name" value="button"/>
在<script></script>標籤中給btn1動態註冊事件,實現js代碼與html網頁代碼相分離。瀏覽器
//動態註冊事件的方式實現js代碼與html網頁代碼相分離 window.onload=function(){ document.getElementById('btn1').onclick=function(){ alert('按鈕被點了');
alert(new Date().toLocaleTimeString());//打印當前時間 }; }
window.onload=function(){ document.getElementById('btn1').onclick=fn; //這樣寫表示把fn函數賦值給onclick事件,點按鈕的時候才執行fn document.getElementById('btn1').onclick=fn();//這樣寫沒有意義,表示將fn的返回值賦值給onclick事件,執行這段代碼的時候當即就執行fn(並無點按鈕也執行) }; function fn(){ alert(new Date().toLocaleTimeString()); }
三、window對象的函數安全
window.alert();//彈出警告框,使用的時候通常省略掉'window.'直接alert()。app
window.confirm();//確認提示框,使用的時候通常省略掉'window.'直接confirm()。
<html> <head> <title></title> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ if(confirm('您確認要點嗎?')){ alert('點擊成功'); } else{ alert('點擊失敗'); } }; }; </script> </head> <body> <input type="button" name="name" value="button" id="btn1"/> </body> </html>
window.location.href='http://www.baidu.com'; //使頁面跳轉到百度,使用時能夠省略掉'window.'。這裏localtion是一個對象,之因此直接寫成window.location='http://www.baidu.com'; 也能成功跳轉是由於瀏覽器容錯比較強,寫的話最好仍是按正確的寫。
<html> <head> <title></title> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ location.href='http://www.baidu.com'; }; }; </script> </head> <body> <input type="button" name="name" value="跳轉到百度" id="btn1"/> </body> </html>
window.navigate('http://www.baidu.com'); //一樣也是使頁面跳轉到百度,使用時能夠省略掉'window.',可是這個只有IE瀏覽器支持,其餘瀏覽器都不支持
window.setInterval()和window.clearInterval()
<html> <head> <title></title> <script type="text/javascript"> window.onload=function(){ var intervalId; document.getElementById('btn1').onclick=function(){ //啓動一個計時器 intervalId= setInterval(function(){ //每隔一秒執行一次這裏面的代碼 //讓文本框中數字累加 //一、首先獲取文本框對象 //var txtObj=document.getElementById('txt1'); <!-- //二、接着獲取文本框中的值 --> <!-- var v=txtObj.value; --> <!-- //三、而後加一 --> <!-- v=parseInt(v)+1; --> <!-- //四、最後將新值賦值給文本框 --> <!-- txtObj.value=v; --> //上面1,2,3,4步能夠簡寫爲 document.getElementById('txt1').value++;//當使用一元運算符的時候,默認會先將字符串轉成數字而後再++。這裏要先++。 },1000); }; document.getElementById('btn2').onclick=function(){ clearInterval(intervalId); }; }; </script> </head> <body> <input type="text" name="name" id="txt1" value="0"/> <input type="button" name="name" value="開始" id="btn1"/> <input type="button" name="name" value="中止" id="btn2"/> </body> </html>
讓title的文字向左向右滾
<html> <head> <title>好好學習,每天向上</title> <script type="text/javascript"> var direction='left'; window.onload=function(){ //啓動一個計時器 setInterval(function(){ var titleText,firstChar,others; titleText=document.title; if(direction=='left'){ firstChar=titleText.charAt(0); others=titleText.substring(1); document.title=others+firstChar; }else{ firstChar=titleText.charAt(titleText.length-1); others=titleText.substring(0,titleText.length-1); document.title=firstChar+others; } },1000); //爲向左向右註冊單擊事件 document.getElementById('btn1').onclick=function(){ direction='left'; }; document.getElementById('btn2').onclick=function(){ direction='right'; }; }; </script> </head> <body> <input type="button" name="name" value="向左" id="btn1"/> <input type="button" name="name" value="向右" id="btn2"/> </body> </html>
window.setTimeout(function(){},2000);
<html> <head> <title></title> <script type="text/javascript"> window.onload=function(){ var timeOutId; document.getElementById('btn1').onclick=function(){ <!-- //每隔2秒彈一個 --> <!-- setInterval(function(){ --> <!-- alert('hello'); --> <!-- },2000); --> //2秒鐘後,彈一個 //只彈出一次 timeOutId=setTimeout(function(){ alert('hello'); },5000); }; document.getElementById('btn2').onclick=function(){ clearTimeout(timeOutId); }; }; </script> </head> <body> <input type="button" name="name" value="start" id="btn1"/> <input type="button" name="name" value="stop" id="btn2"/> </body> </html>
window.onload=function(){}; //當頁面加載完畢後
window.onunload=function(){}; //當頁面卸載完畢後
window.onbeforeunload=function(){};//當頁面卸載前
<html> <head> <script type="text/javascript"> window.onbeforeunload=function(){ alert('頁面即將卸載!'); }; window.onload=function(){ alert('頁面加載完畢!'); };
window.onunload=function(){
alert('頁面卸載完畢後!');
}; </script> </head> <body> </body> </html>
四、window對象得屬性
給按鈕註冊一個單擊事件,當點擊按鈕跳轉到百度頁面window.location.href='';
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ window.location.href='http://www.baidu.com'; }; }; </script> </head> <body> <input type="button" name="name" value="button" id="btn1"/> </body> </html>
給按鈕註冊一個單擊事件,當點擊按鈕彈出當前請求得網址
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ alert(window.location.href); }; }; </script> </head> <body> <input type="button" name="name" value="button" id="btn1"/> </body> </html>
當點擊按鈕刷新當前頁面window.location.reload();
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ window.location.reload(); }; }; </script> </head> <body> <input type="button" name="name" value="button" id="btn1"/> </body> </html>
window.event.ctlKey ==true; 按下control鍵(在IE8及更早的IE瀏覽器下,必須經過window.event方式來獲取事件對象。火狐瀏覽器底下不行,火狐瀏覽器只能在事件處理程序中加一個參數,這個參數就是事件對象)
<html> <head> <style type="text/css"> #div1{ background-color:blue; width:100px; height:100px; } </style> <script type="text/javascript"> window.onload=function(){ document.getElementById('div1').onclick=function(){ if(window.event.ctrlKey){ alert("鼠標點擊的同時按下了control鍵"); }else if(window.event.altKey){ alert("鼠標點擊的同時按下了alt鍵"); }else if(window.event.shiftKey){ alert("鼠標點擊的同時按下了shift鍵"); }else{ alert("普通點擊"); } }; }; </script> </head> <body> <div id="div1"></div> </body> </html>
給事件處理程序添加一個參數,這個參數就是事件對象。這種方式IE9及以上瀏覽器,火狐瀏覽器都支持
<html> <head> <style type="text/css"> #div1{ background-color:blue; width:100px; height:100px; } </style> <script type="text/javascript"> window.onload=function(){ document.getElementById('div1').onclick=function(evt){ if(evt.ctrlKey){ alert("鼠標點擊的同時按下了control鍵"); }else if(evt.altKey){ alert("鼠標點擊的同時按下了alt鍵"); }else if(evt.shiftKey){ alert("鼠標點擊的同時按下了shift鍵"); }else{ alert("普通點擊"); } }; }; </script> </head> <body> <div id="div1"></div> </body> </html>
若是要想全部瀏覽器都兼容能夠:var e=window.event||evt; 聲明一個變量,若是是IE8,window.event返回true,或運算第一個爲真就直接返回第一個e=window.event;若是是火狐window.event爲false,evt爲真,或運算第一個爲false繼續判斷第二個,第二個爲true,返回第二個e=evt
<html> <head> <style type="text/css"> #div1{ background-color:blue; width:100px; height:100px; } </style> <script type="text/javascript"> window.onload=function(){ document.getElementById('div1').onclick=function(evt){ var e=window.event||evt; if(e.ctrlKey){ alert("鼠標點擊的同時按下了control鍵"); }else if(e.altKey){ alert("鼠標點擊的同時按下了alt鍵"); }else if(e.shiftKey){ alert("鼠標點擊的同時按下了shift鍵"); }else{ alert("普通點擊"); } }; }; </script> </head> <body> <div id="div1"></div> </body> </html>
this與window.event.srcElement都表示當前事件(若是都是針對一個事件來看,this與srcElement表示的是同樣的)
事件冒泡中的this與srcElement表示的就不一樣,在這裏若是時用this的話當點擊最內層的元素時會依此將包含其的父元素的id都打印出來,而若是用srcElement的話始終表示最初引起的事件對象(事件冒泡依然繼續)
事件冒泡中的this表示的是當前事件對象,而srcElement表示的是最初引起的事件對象。
<html> <head> <title>事件冒泡</title> <style type="text/css"> #div1{ background-color:blue; width:100px; height:100px; } #p1{ background-color:red; width:50px; height:50px; } #sp1{ background-color:green; width:25px; height:25px; } </style> <script type="text/javascript"> window.onload=function(){ document.body.onclick=function(){ //alert(this.id);
alert(window.event.srcElement.id); }; document.getElementById('div1').onclick=function(){ //alert(this.id);
alert(window.event.srcElement.id); }; document.getElementById('sp1').onclick=function(){ //alert(this.id);
alert(window.event.srcElement.id); }; document.getElementById('p1').onclick=function(){ //alert(this.id);
alert(window.event.srcElement.id); }; }; </script> </head> <body id="bod1"> <div id="div1"> <p id="p1"> <span id="sp1">好好學習</span> </p> </div> </body> </html>
阻止事件冒泡,e.calcleBubble=true;阻止。e.cancleBubble=false;容許。前面是兼容全部瀏覽器的寫法,火狐瀏覽器下還能夠用e.stopPropagation();來阻止
<html> <head> <style type="text/css"> #div1{ background-color:blue; width:100px; height:100px; } #p1{ background-color:red; width:50px; height:50px; } #sp1{ background-color:green; width:25px; height:25px; } </style> <script type="text/javascript"> window.onload=function(){ document.body.onclick=function(){ alert(this.id); }; document.getElementById('div1').onclick=function(evt){ alert(this.id); //兼容模式阻止事件冒泡 var e=window.event||evt e.cancelBubble=true; }; document.getElementById('sp1').onclick=function(evt){ alert(this.id); //兼容模式阻止事件冒泡 var e=window.event||evt e.cancelBubble=true; }; document.getElementById('p1').onclick=function(evt){ alert(this.id); //兼容模式阻止事件冒泡 var e=window.event||evt e.cancelBubble=true; }; }; </script> </head> <body id="bod1"> <div id="div1"> <p id="p1"> <span id="sp1">好好學習</span> </p> </div> </body> </html>
獲取最初引起事件對象的兼容寫法,在IE下要用srcElement,火狐瀏覽器的話得用target
<html> <head> <title>事件冒泡</title> <style type="text/css"> #div1{ background-color:blue; width:100px; height:100px; } #p1{ background-color:red; width:50px; height:50px; } #sp1{ background-color:green; width:25px; height:25px; } </style> <script type="text/javascript"> window.onload=function(){ document.body.onclick=function(evt){ var e=window.event||evt; var srcTarget=e.srcElement||e.target; alert(srcTarget.id); }; document.getElementById('div1').onclick=function(evt){ var e=window.event||evt; var srcTarget=e.srcElement||e.target; alert(srcTarget.id); }; document.getElementById('sp1').onclick=function(evt){ var e=window.event||evt; var srcTarget=e.srcElement||e.target; alert(srcTarget.id); }; document.getElementById('p1').onclick=function(evt){ var e=window.event||evt; var srcTarget=e.srcElement||e.target; alert(srcTarget.id); }; }; </script> </head> <body id="bod1"> <div id="div1"> <p id="p1"> <span id="sp1">好好學習</span> </p> </div> </body> </html>
clipboardData對象(剪貼板),只兼容IE
clipboardData.setData("Text",var);//設置剪貼板中的值,即複製
clipboardData.getData("Text");//讀取剪貼板中的值,即粘貼
clipboardData.clearData("Text");//清空剪貼板
oncopy事件:複製
onpaste事件:粘貼
oncut事件:剪貼
window.history屬性
<html> <head> <title>js dom.history.html</title> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ window.history.forward(); }; document.getElementById('btn2').onclick=function(){ window.history.back(); }; }; </script> </head> <body> <input type="button" name="name" id="btn1" value="前進"/> <input type="button" name="name" id="btn2" value="後退"/> <a href="1.html">1.html</a> </body> </html> <html> <head> <title>1.html</title> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ window.history.forward(); }; document.getElementById('btn2').onclick=function(){ window.history.back(); }; }; </script> </head> <body> <input type="button" name="name" id="btn1" value="前進"/> <input type="button" name="name" id="btn2" value="後退"/> <a href="js dom.history.html">js dom.history.html</a> </body> </html>
window.document屬性
document.write()和document.witeln() 應該和頁面加載一塊兒使用,若是頁面加載完畢再使用會覆蓋原來的頁面
經過document.write()能夠實現動態向頁面中建立內容(包含文本或者各類標籤)
write和writeln的區別在於,writeln輸出完會在源代碼中進行換行,而write不會進行任何換行,是緊挨着輸出
在一個網頁中引用其餘網頁的內容時能夠用document.write();
document.getElementsByTagName('標籤類型');//根據標籤類型來獲取頁面上的標籤,返回的是一個標籤集合,能夠用遍歷的方式來操做集合中的每一個標籤(這裏要用for循環來遍歷,若是時for in 循環的話會將集合的length屬性也遍歷出來,這裏咱們只須要集合中的全部標籤元素,因此用for)
document.getElementsByName('name值');//根據標籤的name屬性獲取頁面上的標籤,返回的是一個標籤集合
document.getElementById('標籤的id').getElementsByTagName('標籤類型');//獲取特定id的標籤下的某類標籤的集合
倒計時協議:
<html> <head> <title></title> <script type="text/javascript"> window.onload=function(){ var s=9; var intervalId=setInterval(function(){ var obj=document.getElementById('btn1'); if(s>0){ obj.value='請仔細閱讀協議('+s+')'; s--; }else{ obj.value='贊成!'; obj.disabled=false; clearInterval(intervalId); } },1000); }; </script> </head> <body> <input type="button" disabled="disabled" id="btn1" name="name" value="請仔細閱讀協議(10)" </body> </html>
動態添加表格
<html> <head> <script type="text/javascript"> var dict={'百度':'http://www.baidu.com','谷歌':'http://www.gogle.com'}; window.onload=function(){ document.getElementById('btn1').onclick=function(){ var tableElement=document.createElement('table'); tableElement.border='1'; for(var key in dict){ var trElement=document.createElement('tr'); var td1Element=document.createElement('td'); td1Element.innerHTML=key; var td2Element=document.createElement('td'); td2Element.innerHTML='<a href="'+dict[key]+'">'+key+'</a>'; trElement.appendChild(td1Element); trElement.appendChild(td2Element); tableElement.appendChild(trElement); } document.body.appendChild(tableElement); }; }; </script> </head> <body> <input type="button" id="btn1" name="name" value="動態添加表格"/> </body> </html>
動態建立DOM元素,刪除子元素(在這裏直接給父對象的innerHTML='',也能夠起到刪除子對象的效果,可是不能刪除子對象的事件,因此推薦使用下面這種removeChild的方式,刪除對象的同時將其對應的事件也一塊兒刪除了)
<html> <head> <title>動態建立DOM(document.createElement)</title> <style type="text/css"> #div1{ width:450px; height:450px; border:1px solid blue; } </style> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ //一、動態建立一個超連接 var aLink=document.createElement('a'); aLink.href='http://www.baidu.com'; aLink.title='百度一下你就知道'; aLink.target='_blank'; aLink.innerText='百度'; document.getElementById('div1').appendChild(aLink); document.getElementById('div1').insertBefore(aLink,document.getElementById('div1').firstChild); //二、動態建立一個文本框 var tInput=document.createElement('input'); tInput.type='text'; document.getElementById('div1').appendChild(tInput); document.getElementById('div1').insertBefore(tInput,document.getElementById('div1').firstChild); }; //刪除子元素 document.getElementById('btn2').onclick=function(){ var divObj=document.getElementById('div1'); while(divObj.firstChild){ divObj.removeChild(divObj.firstChild); } }; }; </script> </head> <body> <input type="button" id="btn1" name="name" value="動態建立一個元素"/> <input type="button" id="btn2" name="name" value="清空層中內容"/> <div id="div1"> sdadasdsadasdasdasd </div> </body> </html>
動態循環建立表格insertRow,insertCell
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ var dict={ '百度':'http://www.baidu.com', '谷歌':'http://www.gogle.com' }; //動態建立表格 var tableElement=document.createElement('table'); tableElement.border='1'; //循環爲表格建立行 for(var key in dict){ //每次遍歷一條數據就動態建立一行 var currentRow=tableElement.insertRow(-1);//-1表示向最後追加一行 //向剛剛插入的行中插入列 var td1=currentRow.insertCell(-1);//向當前行中追加一個列 td1.innerHTML=key; currentRow.insertCell(-1).innerHTML='<a href="'+dict[key]+'">'+key+'</a>'; } document.body.appendChild(tableElement); }; }; </script> </head> <body> <input type="button" id="btn1" value="建立表格" name="name"/> </body> </html>
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn1').onclick=function(){ //一、採集用戶輸入數據 var user_name=document.getElementById('txtNickName').value; var content=document.getElementById('txtContent').value; //二、動態建立行對象 var tableElement=document.getElementById('tbComments'); var currentRow=tableElement.insertRow(-1); currentRow.insertCell(-1).innerHTML=user_name; currentRow.insertCell(-1).innerHTML=content; <!-- var trLine=document.createElement('tr'); --> <!-- var td1=document.createElement('td'); --> <!-- td1.innerHTML=user_name; --> <!-- var td2=document.createElement('td'); --> <!-- tf2.innerHTML=content; --> <!-- trLine.appendChild(td1); --> <!-- trLine.appendChild(td2); --> <!-- document.getElementById('tbComments').appendChild(trLine); --> }; }; </script> </head> <body> <table id="tbComments" border="1"> <tr> <td> 貓貓: </td> <td> 沙發耶! </td> </tr> </table> 暱稱:<input type="text" id="txtNickName"/><br/> <textarea id="txtContent" ></textarea><br/> <input type="button" value="評論" id="btn1"/> </body> </html>
什麼樣的代碼須要放到onload裏面?當代碼須要訪問頁面上的DOM元素時,必需要等頁面加載完畢才能運行,這種代碼須要放到onload裏面。若是不須要訪問頁面的DOM元素就不必放到onload裏面了。
當文本框失去焦點的時候判斷文本框內是否有文字,有則背景爲白色,無則背景爲紅色
<html> <head> <script type="text/javascript"> window.onload=function(){ var inputs=document.getElementsByTagName('input'); for(var i=0;i<inputs.length;i++){ if(inputs[i].type=='text'){ inputs[i].onblur=function(){ if(this.value.length==0){ this.style.backgroundColor='red'; }else{ this.style.backgroundColor='white'; } }; } } }; </script> </head> <body> <input type="text"/><input type="text"/><input type="text"/><input type="text"/> </body> </html>
用js作的評分
<html> <head> <style type="text/css"> td{ font-size:50; color:green; cursor:pointer; } </style> <script type="text/javascript"> window.onload=function(){ //一、獲取全部的td var tdElements=document.getElementById('tb1').getElementsByTagName('td'); //二、爲每一個td註冊一個onmouseover和onmouseout事件 for(var i=0;i<tdElements.length;i++){ tdElements[i].setAttribute('score',(i+1)*10); //爲每一個td註冊一個onmouseover事件 tdElements[i].onmouseover=function(){ for(var c=0;c<tdElements.length;c++){ tdElements[c].innerHTML='★'; if(tdElements[c]==this){ break; } } }; //爲每一個td註冊一個onmouseout事件 tdElements[i].onmouseout=function(){ //標記td爲isclicked的td var tdIndex=-1; for(var c=0;c<tdElements.length;c++){ tdElements[c].innerHTML='☆'; if(tdElements[c].getAttribute('isclicked')){ tdIndex=c; } } //找到當前具備isclicked屬性的td,將0到這個td的每個都變成實心 for(var x=0;x<=tdIndex;x++){ tdElements[x].innerHTML='★'; } }; //爲每一個td註冊一個單擊事件 tdElements[i].onclick=function(){ //清除全部的td的isclicked屬性 for(var c=0;c<tdElements.length;c++){ tdElements[c].removeAttribute('isclicked'); } //設置當前被點擊的td的狀態 this.setAttribute('isclicked','isclicked'); alert(this.getAttribute('score')); }; } }; </script> </head> <body> <table id="tb1" boreder="0" cellpadding="0" cellspacing="0"> <tr> <td>☆</td> <td>☆</td> <td>☆</td> <td>☆</td> <td>☆</td> <td>☆</td> </tr> </table> </body> </html>
選中的超連接變紅色其他超連接變白色而且頁面不跳轉(主要就是this的用法),不跳轉就是在標籤的單擊事件後面加上return false
<html> <head> <script type="text/javascript"> window.onload=function(){ //選取頁面下全部超連接標籤 var alinks=document.getElementsByTagName('a'); //爲每一個標籤註冊一個單擊事件 for(var i=0;i<alinks.length;i++){ alinks[i].onclick=function(){ //設置全部其餘標籤背景變白色 for(var j=0;j<alinks.length;j++){ if(j!=i){ alinks[j].style.backgroundColor='white'; } } //設置被點擊的超連接背景變紅色 this.style.backgroundColor='red'; return false; }; } }; </script> </head> <body> <a href="http://www.baidu.com">百度</a> <a href="http://www.baidu.com">百度</a> <a href="http://www.baidu.com">百度</a> <a href="http://www.baidu.com">百度</a> <a href="http://www.baidu.com">百度</a> <a href="http://www.baidu.com">百度</a> <a href="http://www.baidu.com">百度</a> </body> </html>
點擊表格某行某行變色,其他變白色
<html> <head> <script type="text/javascript"> window.onload=function(){ //獲取全部的行 var trs=document.getElementById('tb').getElementsByTagName('tr'); //爲每一個行註冊單擊事件 for(var i=0;i<trs.length;i++){ trs[i].onclick=function(){ for(var c=0;c<trs.length;c++){ trs[c].style.backgroundColor='white'; } this.style.backgroundColor='red'; }; } }; </script> </head> <body> <table id="tb" border="1" cellpadding="2" cellspacing="2"> <tr> <td>AAA</td> <td>AAA</td> <td>AAA</td> <td>AAA</td> <td>AAA</td> </tr> <tr> <td>AAA</td> <td>AAA</td> <td>AAA</td> <td>AAA</td> <td>AAA</td> </tr> <tr> <td>AAA</td> <td>AAA</td> <td>AAA</td> <td>AAA</td> <td>AAA</td> </tr> <tr> <td>AAA</td> <td>AAA</td> <td>AAA</td> <td>AAA</td> <td>AAA</td> </tr> </table> </body> </html>
經過js操做類樣式
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('bt1').onclick=function(){ document.getElementById('div1').className='class1'; }; document.getElementById('bt2').onclick=function(){ document.getElementById('div1').className+=' class2'; }; document.getElementById('bt3').onclick=function(){ document.getElementById('div1').className+=' class3'; }; }; </script> <style type="text/css"> .class1{ width:500px; height:500px; border:1px solid blue; } .class2{ background-color:yellow; } .class3{ font-family:宋體; font-size:50px; } </style> </head> <body> <input id="bt1" type="button" value="加邊框"/> <input id="bt2" type="button" value="變黃色"/> <input id="bt3" type="button" value="變字體"/> <div id="div1"> 好好學習,每天向上 </div> </body> </html>
動態顯示或隱藏層
<html> <head> <script type="text/javascript"> window.onload=function(){ var btnElement=document.getElementById('btn1'); btnElement.onclick=function(){ if(this.value=='動態隱藏層'){ var intervalId=setInterval(function(){ //獲取要操做的層對象 var divObj=document.getElementById('div1'); //獲取如今層的高度 //只有經過style屬性設置的層的高度才能經過style屬性獲取層的高度,若是不是經過style屬性設置的層的高度,那麼就沒法經過style屬性獲取層的高度 var h=divObj.offsetHeight; h-=5; //把新的高度賦值給層 if(h<0){ h=0; divObj.style.height=0+'px'; btnElement.value='動態顯示層'; divObj.style.display='none'; clearInterval(intervalId); }else{ divObj.style.height=h+'px'; } },200); }else{ //btnElement.value='動態隱藏層'; document.getElementById('div1').style.display=''; var intervalId=setInterval(function(){ //獲取要操做的層對象 var divObj=document.getElementById('div1'); //獲取如今層的高度 //只有經過style屬性設置的層的高度才能經過style屬性獲取層的高度,若是不是經過style屬性設置的層的高度,那麼就沒法經過style屬性獲取層的高度 var h=divObj.offsetHeight; h+=5; //把新的高度賦值給層 if(h>210){ h=210; divObj.style.height=210+'px'; btnElement.value='動態隱藏層'; divObj.style.display=''; clearInterval(intervalId); }else{ divObj.style.height=h+'px'; } },200); } }; }; </script> <style type="text/css"> #div1{ width:200px; height:210px; border:1px solid blue; background-color:red; overflow:hidden; } </style> </head> <body> <input type="button" id="btn1" value="動態隱藏層"/> <div id="div1"> </div> </body> </html>
判斷checkbox選中與否,並打印選中的內容
<html> <head> <script type="text/javascript"> window.onload=function(){ //獲取全部的checkbox var chks=document.getElementById('div1').getElementsByTagName('input'); //遍歷每一個checkbox for(var i=0;i<chks.length;i++){ chks[i].onclick=function(){ var chksAll=document.getElementById('div1').getElementsByTagName('input'); var chkChecked=[]; //循環獲取全部被選中的 for(var j=0;j<chksAll.length;j++){ if(chksAll[j].checked){ chkChecked[chkChecked.length]=chksAll[j].value; } } //獲取個數,而且顯示值 document.getElementById('pmsg').innerHTML='共選中'+chkChecked.length+'項,分別是:'+chkChecked.toString(); }; } }; </script> </head> <body> <div id="div1"> <input type="checkbox" name="name" value="Sam"/>Sam <input type="checkbox" name="name" value="Amy"/>Amy <input type="checkbox" name="name" value="Tom"/>Tom <input type="checkbox" name="name" value="Mary"/>Mary </div> <p id="pmsg"> 共選中0項,分別是: </p> </body> </html>
若是要給整個頁面註冊事件,不要給body註冊,要給document註冊才能夠
點擊按鈕彈出一個登錄層
<html> <head> <title>登錄</title> <style type="text/css"> #div1{ width:250px; height:100px; background-color:yellow; //position:absolute; display:none; } </style> <script type="text/javascript"> window.onload=function(){ document.getElementById('a1').onclick=function(){ var tbElement=document.getElementById('div1'); tbElement.style.display='block'; tbElement.style.margin=document.body.clientHeight/2+' '+document.body.clientWidth/2+' auto'; }; document.getElementById('btn1').onclick=function(){ document.getElementById('div1').style.display='none'; }; }; </script> </head> <body> <a id="a1" href="#">登錄</a> <div id="div1" style='display:none'> <table id="tb1" cellpadding="2" cellspacing="2"> <tr> <td>帳號:</td> <td><input type="text"/></td> </tr> <tr> <td>密碼:</td> <td><input type="password"/></td> </tr> </table> <input type="button" name="name" value="關閉" id="btn1"/> </div> </body> </html>
動態獲取元素高度時的問題
元素對象:element
一、element.offsetHeight:用這種方式獲取元素的高的時候,獲取的時通過計算的,包括了border,margin,padding等的高度
二、element.currentStyle.height:IE下獲取高度(這裏拿到的只是CSS中設置的高度,不包含其餘的)
三、window.getComputedStyle(element,null).height:火狐瀏覽器下獲取高度(拿到實際在css中設置的高度)
利用js操做表單元素
<html> <head> <script type="text/javascript"> window.onload=function(){ //爲層註冊一個單擊事件 document.getElementById('div1').onclick=function(){ //document.getElementById('btnSearch').click(); document.getElementById('form1').submit(); }; document.getElementById('form1').onsubmit=function(){ //再表單提交事件中驗證用戶是否輸入了,輸入了就提交否知不提交 var txt=document.getElementById('txt1'); if(txt.value.length==0){ alert('請輸入內容!'); return false; } }; }; </script> <style type="text/css"> #div1{ width:146px; height:300px; background-color:red; } </style> </head> <body> <form action="http://www.baidu.com/s" method="get" id="form1"> <input type="text" name="wd" id="txt1" value=""/> <input type="submit" value="百度一下,你就知道" id="btnSearch"/> <div id="div1"> </div> </form> </body> </html>
正則表達式使用
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn').onclick=function(){ var post_code=document.getElementById('txt1').value; //驗證是不是合法的郵編 //2.1建立一個正則表達式(正則表達式要寫到一對斜槓裏面) var reg_postcode=/^[0-9]{6}$/; //2.2經過調用正則表達式對象的test方法來測試是否匹配 var isok=reg_postcode.test(post_code); alert(isok); }; }; </script> </head> <body> <input type="text" value="" id="txt1" name="name"/> <input type="button" name="name" value="測試是不是合法的郵政編碼" id="btn" /> </body> </html>
驗證是是不是合法的郵編或郵箱
<html> <head> <script type="text/javascript"> window.onload=function(){ document.getElementById('btn').onclick=function(){ var post_code=document.getElementById('txt1').value; //驗證是不是合法的郵編 //2.1建立一個正則表達式(正則表達式要寫到一對斜槓裏面) var reg_postcode=/^[0-9]{6}$/; //2.2經過調用正則表達式對象的test方法來測試是否匹配 var isok=reg_postcode.test(post_code); alert(isok); }; document.getElementById('btn1').onclick=function(){ var user_email=document.getElementById('txt1').value; var reg_emai=/^\w+@\w+(\.\w+)+$/; alert(reg_emai.test(user_email)); }; }; </script> </head> <body> <input type="text" value="" id="txt1" name="name"/> <input type="button" name="name" value="測試是不是合法的郵政編碼" id="btn" /> <input type="button" name="name" value="測試是不是合法的郵箱" id="btn1" /> </body> </html>
利用js操做正則去掉字符串首尾的空格
<html> <head> <script type="text/javascript"> var msg=' abcdefg '; //msg=msg.replace(/^\s+/,'').replace(/\s+$/,''); alert('==='+msg+'==='); </script> </head> <body> </body> </html>
模擬密碼安全等級判斷
<html> <head> <script type="text/javascript"> window.onload=function(){ //爲文本框註冊一個鍵盤按下而後彈起的事件 document.getElementById('txtPassword').onkeyup=function(){ var tds=document.getElementById('tb1').getElementsByTagName('td'); for(var i=0;i<tds.length;i++){ tds[i].style.backgroundColor='white'; } var pwd=this.value; //根據密碼,校驗強度 if(pwd.length>0){ var pwdLevel= getPasswordLevel(pwd); //根據密碼強度設置強弱 switch(pwdLevel){ case 0: case 1: case 2: tds[0].style.backgroundColor='red'; break; case 3: case 4: tds[0].style.backgroundColor='yellow'; tds[1].style.backgroundColor='yellow'; break; case 5: tds[0].style.backgroundColor='green'; tds[1].style.backgroundColor='green'; tds[2].style.backgroundColor='green'; break; default:break; } } }; }; function getPasswordLevel(user_pwd){ var lvl=0; //一、若是密碼中包含數字則強度+1 if(user_pwd.match(/\d+/)){ lvl++; } //二、若是密碼中包含小寫字母強度+1 if(user_pwd.match(/[a-z]+/)){ lvl++; } //三、若是密碼中包含大寫字母強度+1 if(user_pwd.match(/[A-Z]+/)){ lvl++; } //四、若是密碼中包含特殊符號強度+1 if(user_pwd.match(/^[0-9a-zA-Z]+/)){ lvl++; } //五、若是密碼長度超過6位強度+1 if(user_pwd.length>6){ lvl++; } return lvl; } </script> <style type="text/css"> td{ font:12px 宋體; width:78px; } </style> </head> <body> <p>請輸入密碼: <input type="text" name="name" value="" id="txtPassword"/></p> <table id="tb1" border="1" cellpadding"0" cellspacing="0"> <tr> <td> 弱 </td> <td> 中 </td> <td> 強 </td> </tr> </table> </body> </html>
<html> <head> <title>apply和call</title> <script type="text/javascript"> var user_name="大天狗"; function showName(){ alert(this.user_name); } showName(); <!-- function Person(){ --> <!-- this.user_name="茨木童子" --> <!-- } --> <!-- var p=new Person(); --> <!-- p.show=showName; --> <!-- p.show(); --> var p={user_name:'茨木'}; //建立了一個p對象 showName.apply(p); //用p對象替換了window對象,因此這裏彈出來的是p對象的user_name的值 showName.call(p);//這裏apply和call做用是同樣的,區別就在於若是函數有參數apply要用數組傳進去,而call是以逗號分開的 </script> </head> <body> </body> </html>
<html> <head>
<title>寫遞歸的時候用arguments.callee()來表示遞歸函數自身</title> <script type="text/javascript"> var index=0; function myFunction(){ index++; alert(index); if(index<5){ //myFunction(); //若是是普通函數遞歸,這樣寫和callee的寫法相同 arguments.callee();//這個就表明函數自身 } } //myFunction(); //若是函數是個匿名函數 var p1=function(){ index++; alert(index); if(index<5){ //p1();// 若是匿名只賦值給p1對象的話是沒問題的,可是若是把匿名函數賦值給了p2對象就不行了,就得用callee的方式來表示函數自己。 arguments.callee();//這個就表明函數自身,把匿名 } } p1(); var p2=p1; p2(); </script> </head> <body> </body> </html>
經過js實現人員在表格中的新增與刪除
<html> <head> <style type="text/css"> #tbody1 td{ text-align:center; } </style> <script type="text/javascript"> function deleteCurrentRow(current){ //先拿到當前點的這一行,current表明的就是button按鈕,它的父節點就是th,th的父節點就是tr。 var tr=current.parentNode.parentNode; //而後再從tbody中把這一行刪除出去 document.getElementById('tbody1').removeChild(tr); } window.onload=function(){ //給新增按鈕註冊一個單擊事件 document.getElementById('btn1').onclick=function(){ //獲取要添加的數據 var txName=document.getElementById('txtName').value; var txAge=document.getElementById('txtAge').value; //在tbody中新增一行 var currentRow= document.getElementById('tbody1').insertRow(-1); //在新增的行中添加三列 currentRow.insertCell(-1).innerHTML=txName; currentRow.insertCell(-1).innerHTML=txAge; //經過下面這種方式建立的按鈕不能直接得到其對象,只能經過這種方式建立onclick事件,這裏的這個this就指的是button。 currentRow.insertCell(-1).innerHTML='<input onclick="deleteCurrentRow(this);" type="button" value="刪除" name="name"/>'; }; }; </script> </head> <body> <fieldset style="width:300px;"> <legend>新增人員信息</legend> <P> 姓名:<input type="text" id="txtName"/> </P> <P> 年齡:<input type="text" id="txtAge"/> </P> <P> <input type="button" name="name" id="btn1" value="新增"/> </P> </fieldset> <legend style="width:300px;text-align:center;">人員信息表</legend> <table border="1" cellpadding="0" cellspacing="0" style="width:300px;"> <thead> <tr> <th> 姓名 </th> <th> 年齡 </th> <th> 刪除 </th> </tr> </thead> <tbody id="tbody1"> </tbody> </table> </body> </html>