Web API

DOM

根據(jù)id獲取元素

var div = document.getElementById('main');

注意:由于id名具有唯一性吊奢,部分瀏覽器支持直接使用id名訪問元素艘款,但不是標準方式篷朵,不推薦使用分井。

根據(jù)標簽名獲取元素

var divs = document.getElementsByTagName('div');

for (var i = 0; i < divs.length; i++) {

? var div = divs[i];

}

根據(jù)name獲取元素

var inputs = document.getElementsByName('hobby');

for (var i = 0; i < inputs.length; i++) {

? var input = inputs[i];

}

根據(jù)類名獲取元素

var mains = document.getElementsByClassName('main');

for (var i = 0; i < mains.length; i++) {

? var main = mains[i];

}

根據(jù)選擇器獲取元素

var text = document.querySelector('#text');

var boxes = document.querySelectorAll('.box');

for (var i = 0; i < boxes.length; i++) {

? var box = boxes[i];

}

事件

var box = document.getElementById('box');

box.onclick = function() {

? console.log('代碼會在box被點擊后執(zhí)行');?

};

屬性操作

非表單元素的屬性

href必峰、title糖驴、id僚祷、src、className

var link = document.getElementById('link');

console.log(link.href);

console.log(link.title);

var pic = document.getElementById('pic');

console.log(pic.src);

innerHTML和innerText

var box = document.getElementById('box');

box.innerHTML = '我是文本<p>我會生成為標簽</p>';

console.log(box.innerHTML);

box.innerText = '我是文本<p>我不會生成為標簽</p>';

console.log(box.innerText);

HTML轉(zhuǎn)義符

" &quot;

' &apos;

& &amp;

< &lt;? // less than? 小于

> &gt;? // greater than? 大于

空格 ? &nbsp;

? &copy;

表單元素屬性

value 用于大部分表單元素的內(nèi)容獲取(option除外)

type 可以獲取input標簽的類型(輸入框或復選框等)

disabled 禁用屬性

checked 復選框選中屬性

- selected 下拉菜單選中屬性

自定義屬性操作

getAttribute() 獲取標簽行內(nèi)屬性

setAttribute() 設(shè)置標簽行內(nèi)屬性

removeAttribute() 移除標簽行內(nèi)屬性

與element.屬性的區(qū)別: 上述三個方法用于獲取任意的行內(nèi)屬性贮缕。

樣式操作

使用style方式設(shè)置的樣式顯示在標簽行內(nèi)辙谜,通過樣式屬性設(shè)置寬高、位置的屬性類型是字符串感昼,需要加上px

var box = document.getElementById('box');

box.style.width = '100px';

box.style.height = '100px';

box.style.backgroundColor = 'red';

類名操作

修改標簽的className屬性相當于直接修改標簽的類名

var box = document.getElementById('box');

box.className = 'show';

創(chuàng)建元素的三種方式

document.write()

document.write('新設(shè)置的內(nèi)容<p>標簽也可以生成</p>');

innerHTML

var box = document.getElementById('box');

box.innerHTML = '新內(nèi)容<p>新標簽</p>';

document.createElement()

var div = document.createElement('div');

document.body.appendChild(div);

節(jié)點操作

節(jié)點屬性

nodeType 節(jié)點的類型

????1 元素節(jié)點

????2 屬性節(jié)點

????3 文本節(jié)點

nodeName? 節(jié)點的名稱(標簽名稱)

nodeValue? 節(jié)點值

元素節(jié)點的nodeValue始終是null

節(jié)點層級

var box = document.getElementById('box');

console.log(box.parentNode);

console.log(box.childNodes);

console.log(box.children);

console.log(box.nextSibling);

console.log(box.previousSibling);

console.log(box.firstChild);

console.log(box.lastChild);

注意

? childNodes和children的區(qū)別装哆,childNodes獲取的是子節(jié)點,children獲取的是子元素

? nextSibling和previousSibling獲取的是節(jié)點,獲取元素對應(yīng)的屬性是nextElementSibling和previousElementSibling獲取的是元素

? ? nextElementSibling和previousElementSibling有兼容性問題蜕琴,IE9以后才支持

總結(jié)

節(jié)點操作萍桌,方法

appendChild()

insertBefore()

removeChild()

replaceChild()

節(jié)點層次,屬性

parentNode

childNodes

children

nextSibling/previousSibling

firstChild/lastChild

事件詳解

注冊事件的三種方式

var box = document.getElementById('box');

box.onclick = function () {

? console.log('點擊后執(zhí)行');

};

box.addEventListener('click', eventCode, false); // 瀏覽器兼容性問題凌简,IE9以后才支持

box.attachEvent('onclick', eventCode); // IE6-IE10支持

function eventCode() {

? console.log('點擊后執(zhí)行');

}

移除事件的三種方式

box.onclick = null;

box.removeEventListener('click', eventCode, false);

box.detachEvent('onclick', eventCode);

兼容代碼

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;

? }

}

事件的三個階段

1.捕獲階段

2.當前目標階段

3.冒泡階段

事件對象.eventPhase屬性可以查看事件觸發(fā)時所處的階段

事件對象的屬性和方法

event.type 獲取事件類型

clientX/clientY? ? 所有瀏覽器都支持上炎,窗口位置

pageX/pageY? ? ? IE8以前不支持,頁面位置

event.target || event.srcElement 用于獲取觸發(fā)事件的元素

event.preventDefault() 取消默認行為

阻止事件傳播的方式

標準方式 event.stopPropagation();

IE低版本 event.cancelBubble = true; 標準中已廢棄

常用的鼠標和鍵盤事件

onmouseup 鼠標按鍵放開時觸發(fā)

onmousedown 鼠標按鍵按下觸發(fā)

onmousemove 鼠標移動觸發(fā)

onkeyup 鍵盤按鍵按下觸發(fā)

onkeydown 鍵盤按鍵抬起觸發(fā)

BOM

BOM(Browser Object Model) 是指瀏覽器對象模型雏搂,瀏覽器對象模型提供了獨立于內(nèi)容的藕施、可以與瀏覽器窗口進行互動的對象結(jié)構(gòu)。BOM由多個對象組成凸郑,其中代表瀏覽器窗口的Window對象是BOM的頂層對象铅碍,其他對象都是該對象的子對象。

BOM的頂級對象window

window是瀏覽器的頂級對象线椰,當調(diào)用window下的屬性和方法時胞谈,可以省略window

注意:window下一個特殊的屬性 window.name

對話框

alert()

prompt()

confirm()

頁面加載事件

onload

window.onload = function () {

? // 當頁面加載完成執(zhí)行

? // 當頁面完全加載所有內(nèi)容(包括圖像、腳本文件憨愉、CSS 文件等)執(zhí)行

}

onunload

window.onunload = function () {

? // 當用戶退出頁面時執(zhí)行

}

定時器

setTimeout()和clearTimeout()

// 創(chuàng)建一個定時器烦绳,1000毫秒后執(zhí)行,返回定時器的標示

var timerId = setTimeout(function () {

? console.log('Hello World');

}, 1000);

// 取消定時器的執(zhí)行

clearTimeout(timerId);

setInterval()和clearInterval()

定時調(diào)用的函數(shù)配紫,可以按照給定的時間(單位毫秒)周期調(diào)用函數(shù)

// 創(chuàng)建一個定時器径密,每隔1秒調(diào)用一次

var timerId = setInterval(function () {

? var date = new Date();

? console.log(date.toLocaleTimeString());

}, 1000);

// 取消定時器的執(zhí)行

clearInterval(timerId);

location對象

location對象是window對象下的一個屬性,使用的時候可以省略window對象

location可以獲取或者設(shè)置瀏覽器地址欄的URL

location成員

assign()委派躺孝,可以讓頁面跳轉(zhuǎn)到指定地址

reload()重新加載享扔,參數(shù)為true強制從服務(wù)器獲取頁面,false如果瀏覽器有緩存會從緩存中獲取頁面

replace()替換掉地址欄中的地址植袍,但是不記住歷史

hash/host/hostname/search/href……

URL組成

scheme://host:port/path?query#fragment

http://www.itheima.com:80/a/b/index.html?name=zs&age=18#bottom

scheme:通信協(xié)議惧眠,常用的http,ftp,maito等

host:主機,服務(wù)器(計算機)域名系統(tǒng) (DNS) 主機名或 IP 地址于个。

port:端口號氛魁,整數(shù),可選厅篓,省略時使用方案的默認端口秀存,如http的默認端口為80。

path:路徑羽氮,由零或多個'/'符號隔開的字符串或链,一般用來表示主機上的一個目錄或文件地址。

query:查詢档押,可選澳盐,用于給動態(tài)網(wǎng)頁傳遞參數(shù)祈纯,可有多個參數(shù),用'&'符號隔開洞就,每個參數(shù)的名和值用'='符號隔開盆繁。例如:name=zs

fragment:信息片斷,字符串旬蟋,錨點.

history對象

back()

forward()

go()

navigator對象

userAgent

特效

偏移量

offsetParent用于獲取距離當前元素最近的定位父級元素

offsetWidth油昂,offsetHeight 獲取大小,包括padding和border

offsetLeft倾贰,offsetTop 距離定位父元素的距離冕碟,如果沒有定位父元素就是body

客戶區(qū)大小

clientWidth,clientHeight 獲取大小匆浙,包括padding安寺,但不包括border,不包括滾動條

clientLeft首尼,clientTop?是border的寬度

滾動偏移

scrollWidth挑庶,scrollHeight 內(nèi)容大小,包括padding和未顯示的內(nèi)容软能,不包括滾動條

scrollLeft迎捺,scrollTop 滾動出去的距離

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市查排,隨后出現(xiàn)的幾起案子凳枝,更是在濱河造成了極大的恐慌,老刑警劉巖跋核,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岖瑰,死亡現(xiàn)場離奇詭異,居然都是意外死亡砂代,警方通過查閱死者的電腦和手機蹋订,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泊藕,“玉大人辅辩,你說我怎么就攤上這事⊥拊玻” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵蛾茉,是天一觀的道長讼呢。 經(jīng)常有香客問我,道長谦炬,這世上最難降的妖魔是什么悦屏? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任节沦,我火速辦了婚禮,結(jié)果婚禮上础爬,老公的妹妹穿的比我還像新娘甫贯。我一直安慰自己,他們只是感情好看蚜,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布叫搁。 她就那樣靜靜地躺著,像睡著了一般供炎。 火紅的嫁衣襯著肌膚如雪渴逻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天音诫,我揣著相機與錄音惨奕,去河邊找鬼。 笑死竭钝,一個胖子當著我的面吹牛梨撞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播香罐,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼卧波,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了穴吹?” 一聲冷哼從身側(cè)響起幽勒,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎港令,沒想到半個月后啥容,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡顷霹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年咪惠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淋淀。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡遥昧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朵纷,到底是詐尸還是另有隱情炭臭,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布袍辞,位于F島的核電站鞋仍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搅吁。R本人自食惡果不足惜威创,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一落午、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肚豺,春花似錦溃斋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呛谜,卻和暖如春在跳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隐岛。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工猫妙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聚凹。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓割坠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妒牙。 傳聞我的和親對象是個殘疾皇子彼哼,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準湘今。 注意:講述HT...
    kismetajun閱讀 27,450評論 1 45
  • 以后是對于初學者有幫助的一些JS的方法API敢朱,使用即說明 ■JS組成■1,ECMAScript : js的核心標準...
    簡愛的三年閱讀 821評論 0 0
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品摩瞎,去做同樣的事情拴签,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,727評論 2 17
  • 概要 64學時 3.5學分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,141評論 0 3
  • 單例模式 適用場景:可能會在場景中使用到對象旗们,但只有一個實例蚓哩,加載時并不主動創(chuàng)建,需要時才創(chuàng)建 最常見的單例模式上渴,...
    Obeing閱讀 2,058評論 1 10