DOM和BOM的區別javascript
經過可編程的對象模型,JavaScript 得到了足夠的能力來建立動態的 HTML。php
爲了作到這件事情,您必須首先找到該元素。有三種方法來作這件事:java
var x=document.getElementById("main"); var y=x.getElementsByTagName("p");
var x=document.getElementsByClassName("intro");
在 JavaScript 中,document.write() 可用於直接向 HTML 輸出流寫內容。node
絕對不要在文檔加載完成以後使用 document.write()。這會覆蓋該文檔。web
如需改變 HTML 元素的內容,請使用這個語法:編程
如需改變 HTML 元素的屬性,請使用這個語法:瀏覽器
如需改變 HTML 元素的樣式,請使用這個語法:cookie
document.getElementById("p2").style.color="blue"; document.getElementById("p2").style.fontFamily="Arial"; document.getElementById("p2").style.fontSize="larger";
style="visibility:hidden"app
<input type="button" value="隱藏文本" onclick="document.getElementById('p1').style.visibility='hidden'" />
<input type="button" value="顯示文本" onclick="document.getElementById('p1').style.visibility='visible'" />函數
HTML 事件的例子:
document.getElementById("myBtn").onclick=function(){displayDate()};
onload 和 onunload 事件會在用戶進入或離開頁面時被觸發。
onload 事件可用於檢測訪問者的瀏覽器類型和瀏覽器版本,並基於這些信息來加載網頁的正確版本。
onload 和 onunload 事件可用於處理 cookie。
<p>該實例使用 addEventListener() 方法在按鈕中添加點擊事件。 </p> <button id="myBtn">點我</button> <p id="demo"></p> <script> document.getElementById("myBtn").addEventListener("click", displayDate); function displayDate() { document.getElementById("demo").innerHTML = Date(); } </script>
addEventListener() 方法用於向指定元素添加事件句柄。
addEventListener() 方法添加的事件句柄不會覆蓋已存在的事件句柄。
你能夠向一個元素添加多個事件句柄。
你能夠向同個元素添加多個同類型的事件句柄,如:兩個 "click" 事件。
你能夠向任何 DOM 對象添加事件監聽,不只僅是 HTML 元素。如: window 對象。
addEventListener() 方法能夠更簡單的控制事件(冒泡與捕獲)。
當你使用 addEventListener() 方法時, JavaScript 從 HTML 標記中分離開來,可讀性更強, 在沒有控制HTML標記時也能夠添加事件監聽。
你可使用 removeEventListener() 方法來移除事件的監聽。
element.removeEventListener("mousemove", myFunction);
第一個參數是事件的類型 (如 "click" 或 "mousedown").
第二個參數是事件觸發後調用的函數。
第三個參數是個布爾值用於描述事件是冒泡仍是捕獲。該參數是可選的
當傳遞參數值時,使用"匿名函數"調用帶參數的函數:
在 冒泡 中,內部元素的事件會先被觸發,而後再觸發外部元素,即: <p> 元素的點擊事件先觸發,而後會觸發 <div> 元素的點擊事件。
在 捕獲 中,外部元素的事件會先被觸發,而後纔會觸發內部元素的事件,即: <div> 元素的點擊事件先觸發 ,而後再觸發 <p> 元素的點擊事件。
默認值爲 false, 即冒泡傳遞,當值爲 true 時, 事件使用捕獲傳遞。
如何要阻止冒泡,以下
event.stopPropagation();
或者
return false;
跨瀏覽器解決方法:
var x = document.getElementById("myBtn"); if (x.addEventListener) { // 全部主流瀏覽器,除了 IE 8 及更早版本 x.addEventListener("click", myFunction); } else if (x.attachEvent) { // IE 8 及更早版本 x.attachEvent("onclick", myFunction); }
添加或者刪除元素節點
<script> var para=document.createElement("p"); var node=document.createTextNode("這是一個新段落。"); para.appendChild(node); //其實這裏用innerHTML也能夠 var element=document.getElementById("div1"); element.appendChild(para); </script>
var parent=document.getElementById("div1"); var child=document.getElementById("p1"); parent.removeChild(child);
DOM 須要清楚您須要刪除的元素,以及它的父元素。
var child=document.getElementById("p1"); child.parentNode.removeChild(child);
瀏覽器BOM
瀏覽器對象模型(Browser Object Model (BOM))尚無正式標準。
因爲現代瀏覽器已經(幾乎)實現了 JavaScript 交互性方面的相同方法和屬性,所以常被認爲是 BOM 的方法和屬性
全部瀏覽器都支持 window 對象。它表示瀏覽器窗口。
全部 JavaScript 全局對象、函數以及變量均自動成爲 window 對象的成員。
全局變量是 window 對象的屬性。
全局函數是 window 對象的方法。
甚至 HTML DOM 的 document 也是 window 對象的屬性之一:
與此相同:
有三種方法可以肯定瀏覽器窗口的尺寸。
對於Internet Explorer、Chrome、Firefox、Opera 以及 Safari:
或者
不過ie8及如下爲其餘方法
實用的 JavaScript 方案(涵蓋全部瀏覽器):
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
window.open() - 打開新窗口 window.close() - 關閉當前窗口 window.moveTo() - 移動當前窗口 window.resizeTo() - 調整當前窗口的尺寸
window.screen 對象包含有關用戶屏幕的信息。
window.location 對象在編寫時可不使用 window 這個前綴。 一些例子:
一些實例:
<script> document.write(location.href+"<br>"); document.write(location.hostname +"<br>") document.write(location.pathname+"<br>") document.write( location.port+"<br>") document.write( location.protocol +"<br>") </script> =======輸出============== http://www.runoob.com/try/try.php?filename=tryjs_loc_assign www.runoob.com /try/try.php http:
window.navigator 對象包含有關訪問者瀏覽器的信息。
來自 navigator 對象的信息具備誤導性,不該該被用於檢測瀏覽器版本,這是由於:
<div id="example"></div> <script> txt = "<p>瀏覽器代號: " + navigator.appCodeName + "</p>"; txt+= "<p>瀏覽器名稱: " + navigator.appName + "</p>"; txt+= "<p>瀏覽器版本: " + navigator.appVersion + "</p>"; txt+= "<p>啓用Cookies: " + navigator.cookieEnabled + "</p>"; txt+= "<p>硬件平臺: " + navigator.platform + "</p>"; txt+= "<p>用戶代理: " + navigator.userAgent + "</p>"; txt+= "<p>用戶代理語言: " + navigator.systemLanguage + "</p>"; document.getElementById("example").innerHTML=txt; </script> ===========輸出============= 瀏覽器代號: Mozilla 瀏覽器名稱: Netscape 瀏覽器版本: 5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 啓用Cookies: true 硬件平臺: MacIntel 用戶代理: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 用戶代理語言: undefined
能夠在 JavaScript 中建立三種消息框:警告框、確認框、提示框。
alert("sometext");
confirm("sometext")
var r=confirm("按下按鈕"); if (r==true) { x="你按下了\"肯定\"按鈕!"; } else { x="你按下了\"取消\"按鈕!"; }
提示框常常用於提示用戶在進入頁面前輸入某個值。
當提示框出現後,用戶須要輸入某個值,而後點擊確認或取消按鈕才能繼續操縱。
若是用戶點擊確認,那麼返回值爲輸入的值。若是用戶點擊取消,那麼返回值爲 null。
var x; var person=prompt("請輸入你的名字","Harry Potter"); if (person!=null && person!=""){ x="你好 " + person + "! 今天感受如何?"; document.getElementById("demo").innerHTML=x; }
彈窗使用 反斜槓 + "\n" 來設置換行。
setInterval("javascript function",milliseconds);
setInterval() 第一個參數是函數(function)。
第二個參數間隔的毫秒數
setInterval(function(){alert("Hello")},3000);//每過3秒彈一個Hello
<p>在頁面顯示一個時鐘</p> <p id="demo"></p> <script> var myVar=setInterval(function(){myTimer()},1000); function myTimer(){ var d=new Date(); var t=d.toLocaleTimeString(); document.getElementById("demo").innerHTML=t; } </script>
//clearInterval() 方法用於中止 setInterval() 方法執行的函數代碼。
function myStopFunction()
{
clearInterval(myVar);
}
等待3秒,而後彈出 "Hello":
JavaScript 可使用 document.cookie 屬性來建立 、讀取、及刪除 cookie。
JavaScript 中,建立 cookie 以下所示:
您還能夠爲 cookie 添加一個過時時間(以 UTC 或 GMT 時間)。默認狀況下,cookie 在瀏覽器關閉時刪除:
您可使用 path 參數告訴瀏覽器 cookie 的路徑。默認狀況下,cookie 屬於當前頁面。
在 JavaScript 中, 可使用如下代碼來讀取 cookie:
在 JavaScript 中,修改 cookie 相似於建立 cookie,以下所示:
舊的 cookie 將被覆蓋。
刪除 cookie 很是簡單。您只須要設置 expires 參數爲之前的時間便可,以下所示,設置爲 Thu, 01 Jan 1970 00:00:00 GMT:
注意,當您刪除時沒必要指定 cookie 的值。
若是您設置了新的 cookie,舊的 cookie 不會被覆蓋。 新 cookie 將添加到 document.cookie 中,因此若是您從新讀取document.cookie,您將得到以下所示的數據:
cookie1=value; cookie2=value;
function setCookie(cname,cvalue,exdays) { var d = new Date(); d.setTime(d.getTime()+(exdays*24*60*60*1000)); var expires = "expires="+d.toGMTString(); document.cookie = cname + "=" + cvalue + "; " + expires; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(name)==0) return c.substring(name.length,c.length); } return ""; }