定義了JavaScript 的語法規範javascript
JavaScript的核心,描述了語言的基本語法和數據類型,ECMAScript是一套標準,定義了一種語言的標準與具體實現無關html
一套操做瀏覽器功能的APIjava
經過BOM能夠操做瀏覽器窗口,好比:彈出框、控制瀏覽器跳轉、獲取分辨率等node
一套操做頁面元素的APIgit
DOM能夠把HTML看作是文檔樹,經過DOM提供的API能夠對樹上的節點進行操做數組
掌握
getElementById()
getElementsByTagName()
瞭解
getElementsByName()
getElementsByClassName()
querySelector()
querySelectorAll()
複製代碼
var div = document.getElementById('main');
console.log(div);
// 獲取到的數據類型 HTMLDivElement,對象都是有類型的
複製代碼
注意:因爲id名具備惟一性,部分瀏覽器支持直接使用id名訪問元素,但不是標準方式,不推薦使用。瀏覽器
var divs = document.getElementsByTagName('div');
複製代碼
*
var inputs = document.getElementsByName('hobby');
複製代碼
*
var mains = document.getElementsByClassName('main');
複製代碼
*
var text = document.querySelector('#text');
console.log(text);
var boxes = document.querySelectorAll('.box');
for (var i = 0; i < boxes.length; i++) {
var box = boxes[i];
console.log(box);
}
複製代碼
var box = document.getElementById('box');
box.innerHTML = '我是文本<p>我會生成爲標籤</p>';
console.log(box.innerHTML);
box.innerText = '我是文本<p>我不會生成爲標籤</p>';
console.log(box.innerText);
複製代碼
" " ' ' & & < < // less than 小於 > > // greater than 大於 空格 © © 複製代碼
表單元素屬性bash
自定義屬性操做服務器
樣式操做app
var box = document.getElementById('box');
box.style.width = '100px';
box.style.height = '100px';
box.style.backgroundColor = 'red';
複製代碼
注意
經過樣式屬性設置寬高、位置的屬性類型是字符串,須要加上px
類名操做
var box = document.getElementById('box');
box.className = 'show';
複製代碼
document.write('新設置的內容<p>標籤也能夠生成</p>');
複製代碼
var box = document.getElementById('box');
box.innerHTML = '新內容<p>新標籤</p>';
複製代碼
var div = document.createElement('div');
document.body.appendChild(div);
複製代碼
var body = document.body;
var div = document.createElement('div');
body.appendChild(div);
var firstEle = body.children[0];
body.insertBefore(div, firstEle);
body.removeChild(firstEle);
var text = document.createElement('p');
body.replaceChild(text, div);
複製代碼
function Element(option) {
this.id = option.id || '';
this.nodeName = option.nodeName || '';
this.nodeValue = option.nodeValue || '';
this.nodeType = 1;
this.children = option.children || [];
}
var doc = new Element({
nodeName: 'html'
});
var head = new Element({
nodeName: 'head'
});
var body = new Element({
nodeName: 'body'
})
doc.children.push(head);
doc.children.push(body);
var div = new Element({
nodeName: 'div',
nodeValue: 'haha',
});
var p = new Element({
nodeName: 'p',
nodeValue: '段落'
})
body.children.push(div);
body.children.push(p);
function getChildren(ele) {
for(var i = 0; i < ele.children.length; i++) {
var child = ele.children[i];
console.log(child.nodeName);
getChildren(child);
}
}
getChildren(doc);
複製代碼
注意
childNodes和children的區別,childNodes獲取的是子節點,children獲取的是子元素
nextSibling和previousSibling獲取的是節點,獲取元素對應的屬性是nextElementSibling和previousElementSibling獲取的是元素
nextElementSibling和previousElementSibling有兼容性問題,IE9之後才支持
總結
節點操做,方法
appendChild()
insertBefore()
removeChild()
replaceChild()
節點層次,屬性
parentNode
childNodes
children
nextSibling/previousSibling
firstChild/lastChild
複製代碼
var box = document.getElementById('box');
box.onclick = function () {
console.log('點擊後執行');
};
box.onclick = null;
//註冊與刪除事件
box.addEventListener('click', eventCode, false);
box.removeEventListener('click', eventCode, false);
//IE特有的刪除與註冊事件
box.attachEvent('onclick', eventCode);
box.detachEvent('onclick', eventCode);
function eventCode() {
console.log('點擊後執行');
}
複製代碼
function addEventListener(element, type, fn) {
if (element.addEventListener) {
element.addEventListener(type, fn, false);
} else if (element.attachEvent){
element.attachEvent('on' + type,fn);
} else {
element['on'+type] = fn;
}
}
function removeEventListener(element, type, fn) {
if (element.removeEventListener) {
element.removeEventListener(type, fn, false);
} else if (element.detachEvent) {
element.detachEvent('on' + type, fn);
} else {
element['on'+type] = null;
}
}
複製代碼
window.onload = function () {
// 當頁面加載完成執行
// 當頁面徹底加載全部內容(包括圖像、腳本文件、CSS 文件等)執行
}
複製代碼
window.onunload = function () {
// 當用戶退出頁面時執行
}
複製代碼
在指定的毫秒數到達以後執行指定的函數,只執行一次
// 建立一個定時器,1000毫秒後執行,返回定時器的標示
var timerId = setTimeout(function () {
console.log('Hello World');
}, 1000);
// 取消定時器的執行
clearTimeout(timerId);
複製代碼
定時調用的函數,能夠按照給定的時間(單位毫秒)週期調用函數
// 建立一個定時器,每隔1秒調用一次
var timerId = setInterval(function () {
var date = new Date();
console.log(date.toLocaleTimeString());
}, 1000);
// 取消定時器的執行
clearInterval(timerId);
複製代碼
location對象是window對象下的一個屬性,時候的時候能夠省略window對象
location能夠獲取或者設置瀏覽器地址欄的URL
統一資源定位符 (Uniform Resource Locator, URL)
scheme://host:port/path?query#fragment
scheme:通訊協議
經常使用的http,ftp,maito等
host:主機
服務器(計算機)域名系統 (DNS) 主機名或 IP 地址。
port:端口號
整數,可選,省略時使用方案的默認端口,如http的默認端口爲80。
path:路徑
由零或多個'/'符號隔開的字符串,通常用來表示主機上的一個目錄或文件地址。
query:查詢
可選,用於給動態網頁傳遞參數,可有多個參數,用'&'符號隔開,每一個參數的名和值用'='符號隔開。例如:name=zs
fragment:信息片段
字符串,錨點.
複製代碼
經過userAgent能夠判斷用戶瀏覽器的類型
經過platform能夠判斷瀏覽器所在的系統平臺類型.
var box = document.getElementById('box');
console.log(box.offsetParent);
console.log(box.offsetLeft);
console.log(box.offsetTop);
console.log(box.offsetWidth);
console.log(box.offsetHeight);
複製代碼
var box = document.getElementById('box');
console.log(box.clientLeft);
console.log(box.clientTop);
console.log(box.clientWidth);
console.log(box.clientHeight);
複製代碼
var box = document.getElementById('box');
console.log(box.scrollLeft)
console.log(box.scrollTop)
console.log(box.scrollWidth)
console.log(box.scrollHeight)
複製代碼