国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS基礎(chǔ)知識學習(四)

zacklee / 1410人閱讀

摘要:基礎(chǔ)知識基礎(chǔ)精講文檔對象模型,提供一些屬性和方法可以讓我們?nèi)ゲ僮髟亍?/p>

JS基礎(chǔ)知識 DOM基礎(chǔ)精講
DOM:document.object model 文檔對象模型,提供一些屬性和方法可以讓我們?nèi)ゲ僮鱀OM元素。
獲取DOM元素的方法

document.getElementById 一個元素

[context].getElementsByTagName 元素集合

[context].getElementsByClassName 元素集合

document.getElementsByName 節(jié)點集合

document.documentElement 獲取整個HTML對象

document.body 獲取整個BODY對象

document.head 獲取整個HEAD對象

[context].querySelector 一個元素對象

[context].querySelectorAll 獲取元素集合

...

getElementById

此方法的上下文只能是document

一個HTML頁面中的id理論上是不能重復的

1、如果頁面中的id重復了,我們獲取的結(jié)果是第一個id對應(yīng)的元素對象

2、在IE7及更低版本瀏覽器中,會把表單元素的name值當做id來識別(項目中盡量不要讓表單的name和其他元素的id相同)

3、如果我們把JS放在結(jié)構(gòu)的下面,我們可以直接使用ID值來獲取這個元素(不需要通過getElementById獲取),而且這種方式會把頁面中所有ID是他的元素都獲取到(元素對象/元素集合)=>不規(guī)范 不推薦

//=>獲取頁面中ID值為#box1的所有元素標簽
var allList=document.getElementsByTagName("*"),
    result=[];
for(var i=0;i

getElementByTagName

上下文是可以自己指定的

獲取到的結(jié)果是一個元素的集合(類數(shù)組集合)

1、獲取的結(jié)果是集合,哪怕集合中只有一項,我們想要操作這一項(元素對象),需要先從集合中獲取出來,然后再操作

2、在指定的上下文中,獲取所有子子孫孫元素中標簽名叫做這個的(后代篩選)


    

getElementsByClassName

上下文可以隨意指定

獲取的結(jié)果也是一個元素集合(類數(shù)組集合)

1、真實項目中我們經(jīng)常會通過樣式類名來獲取元素,getElementsByClassName這個方法在IE6~8瀏覽器中是不兼容的

getElementsByName

通過元素的NAME屬性值獲取一組元素(類數(shù)組:節(jié)點集合 NOdeList)

它的上下文也只能是document

1、IE瀏覽器只能識別表單元素的那么屬性值,所以我們這個方法一般都是用來操作表單元素的

document.documentElement/document.body

獲取HTML或者BODY(一個元素對象)
//=>獲取當前瀏覽器窗口可視區(qū)域的寬度(當前頁面一屏的寬度)
document.documentElement.clientWidth||document.body.clientWidth
//=>clientHeight 獲取高度

querySelector/querySelectorAll

在IE6~8下不兼容,而且也沒什么特別好辦法處理它的兼容,所以這兩個方法一般多用于移動端開發(fā)使用

querySlector:獲取一個元素對象

querySlectorAll:獲取的是一個元素的集合

只要是css支持的選擇器,這里大部分都支持

DOM的節(jié)點

node:節(jié)點,瀏覽器認為在一個HTML頁面中所有內(nèi)容都是節(jié)點(包括標簽,注釋,文字文本等)

元素節(jié)點 :HTML標簽

文本節(jié)點 :文字內(nèi)容(高版本瀏覽器會把空格和換行也當作文本節(jié)點)

注釋節(jié)點:注釋內(nèi)容

document文檔節(jié)點

...

元素節(jié)點

nodeType:1;

nodeName:大寫標簽名(在部分瀏覽器的怪異模式下,我們寫的標簽名是小寫,它獲取的就是小寫...)

nodeValue:null

[curEle].tagName:獲取當前元素的標簽名(獲取的標簽名一般都是大寫)

文本節(jié)點

nodeType:3

nodeName:#text

nodeValue:文本內(nèi)容

注釋節(jié)點

nodeType:8

nodeName:#comment

nodeValue:注釋內(nèi)容

文檔節(jié)點

nodeType:9

nodeName :#document

nodeValue:null

節(jié)點是用來描述頁面中每一部分之間關(guān)系的,只要可以獲取頁面中的一個節(jié)點,那么就可以通過相關(guān)的屬性和方法獲取頁面中的所有節(jié)點

childNodes

獲取當前元素所有的子節(jié)點(節(jié)點集合:類數(shù)組)

注:不僅僅是元素節(jié)點,文本、注釋等都會包含在內(nèi);子節(jié)點說明只是在兒子輩分中查找;

children

獲取所有的元素子節(jié)點(元素集合)

在IE6~8下獲取的結(jié)果和標準瀏覽器中有區(qū)別(IE6~8中會把注釋節(jié)點當做元素節(jié)點獲取到)

parentNode

獲取當前元素的父節(jié)點(元素對象)

previousSibling && nextSibling

previousSibling:獲取當前節(jié)點的上一個哥哥節(jié)點(不一定是元素節(jié)點也可以能是文本和注釋)

nextSibling:獲取當前節(jié)點的下一個弟弟節(jié)點

previousElementSibling && nextElementSibling

previousElementSibling:獲取當前節(jié)點的上一個哥哥元素節(jié)點

nextElementSibling:獲取當前節(jié)點下一個弟弟元素節(jié)點

IE6~8下不兼容

firstChild && lastChild

fristChild:當前元素所有子節(jié)點中的第一個(也不一定時元素節(jié)點,可能是文本和注釋)

lastChild:當前元素所有子節(jié)點中的最后一個

fristElementChild && lastElementChild (IE6~8 兼容)

DOM的增刪改
真實項目中,我們偶爾會在JS中動態(tài)創(chuàng)建一些HTML標簽,然后把其增加到頁面中

document.createElement

在JS中動態(tài)創(chuàng)建一個HTML標簽

appendChild

容器.appendChild(新元素)

把當前創(chuàng)建的新元素添加到容器的末尾位置

insertBefore

容器.insertBefore(新元素,老元素)

在當前容器中,把新創(chuàng)建的元素增加到老元素之前

//=>真實項目中很多需求都是通過動態(tài)創(chuàng)建元素來完成的,其中有一個需求:解析一個URL地址每一部分的信息(包含問號傳遞的參數(shù)值)
//->1.純字符串拆分
//->2.編寫強大的正則,捕獲到需要的結(jié)果
//->3.通過動態(tài)創(chuàng)建一個A標簽,利用A標簽的一些內(nèi)置屬性來分別獲取每一個部分的內(nèi)容
//->...
/***
    var link=document.createElement("a");
    link.;//->此處地址就是我們需要解析的URL
    //->hash:存儲了哈希值 "#teacher"
    //->hostname: 存儲的是域名 "http//www.andy.com"
    //->pathname: 存儲的是請求資源的路徑 "/stu/"
    //->protocol: 協(xié)議 "http:"
    //->search: 存儲的是問號傳遞參數(shù)值,沒有傳遞是字符串 "?name=andy&age=30&sex=0"
***/

function queryURLParameter(url){
    var link=document.createElement("a");
    link.href="url";
    var search=link.search,
        obj={};
    if(search.length===0) return;
    search=search.substr(1).split(/&|=/g);
    for(var i=0;i

removeChild

容器.removeChild(元素)

在當前容器中把某一個元素移除掉

replaceChild

容器.replaceChild(新元素,老元素)

在當前容器中,拿新元素替換老元素

cloneNode

元素.cloneNode(false/true)

把原有的元素克隆一份一模一樣的,false:只克隆當前的元素本身,true:深度克隆,把當前元素本身以及元素的所有后代都進行克隆

[set/get/remove]Attribute

給當前元素設(shè)置/獲取/移除 屬性的(一般操作的都是他的自定義屬性)

box.setAttribute("myIndex",0)

box.getAttribute("myIndex")

box.removeAttribute("myIndex")

使用xxx.index和xxx.setAttribute("index",0)這兩種設(shè)置自定義屬性的區(qū)別

xxx.index:是把當前操作的元素當做一個普通對象,為其設(shè)置一個屬性名(和頁面中的HTML標簽沒關(guān)系)

xxx.setAttribute:把元素當做特殊的元素對象來處理,設(shè)置的自定義屬性是和頁面結(jié)構(gòu)中的DOM元素映射在一起的

JS中獲取的元素對象,我們可以把它理解為兩種角色:

與頁面HTML結(jié)構(gòu)無關(guān)的普通對象

與頁面HTML結(jié)構(gòu)存在映射關(guān)系的元素對象

元素對象中的內(nèi)置屬性,大部分都和頁面的標簽存再映射關(guān)系:

xxx.style.backgroundColor="xxx" 此時不僅把JS中對象對應(yīng)的屬性值改變了,而且也會映射到頁面的HTML標簽上(標簽中有一個style行內(nèi)樣式,元素的樣式改變了)

xxx.className="xxx" 此時不僅是把JS對象中的屬性值改了,而且頁面中的標簽增加了class樣式類(可以看見的)

//獲取上一個哥哥元素節(jié)點
//=>獲取當前元素的上一個節(jié)點
//=>循環(huán)判斷:當上一個節(jié)點存在,并且上一個節(jié)點類型不為1時,持續(xù)循環(huán),知道節(jié)點類型為1
function prevSibling(curELe){
    var p=curEle.previousSibling;
    while(p && typeof!==1){
        p=p.perviousSibling;
    }
    return p;
}
Date日期操作基礎(chǔ)講解
Date 是日期類,通過他可以對時間進行處理
var time=new Date();//獲取當前客戶端本機時間(當前獲取的時間不能作為重要的參考依據(jù))

//=>獲取的結(jié)果是一個日期格式的對象:Mon Jul 02 2018 14:00:14 GMT+0800 (中國標準時間)

typeof new Date()->"object"

//=>time.getFullYear()獲取四位整數(shù)年
//=>time.getMonth() 獲取月0~11, 代表1~12月
//=>time.getDate() 獲取日
//=>time.getDay() 獲取星期(0~6)代表周日~周六
//=>time.getHours() 獲取小時
//=>time.getMinutes() 獲取分鐘
//=>time.getSeconds() 獲取秒
//=>time.getMilliseconds() 獲取毫秒
//=>time.getTime() 獲取當前日期距離"1970-01-01 00:00:00"毫秒差
var time=new Date("2017-10-22");//=>當new Date中傳遞一個時間格式的字符串,相當于把這個字符串轉(zhuǎn)換為標準的時間對象格式(轉(zhuǎn)換完成后,就可以調(diào)取上面我們講的那些方法了)
//=>時間格式的字符串
//"2017-10-22"(IE下識別不了)
//"2017/10/22"
//"2017/10/22 16:15:34"
//1530511656252(如果傳遞的是距離1970年的那個毫秒差,但是只能是數(shù)字)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/95736.html

相關(guān)文章

  • JS基礎(chǔ)知識學習(三)

    摘要:基礎(chǔ)知識字符串中常用的方法在中用單雙引號包裹起來的都是字符串字符串就是由到多個字符組成的特點一以數(shù)字作為索引,從零開始特點二有屬性,存儲的是當前字符串中字符的個數(shù)字符長度如果指定的索引不存在獲取的結(jié)果是真實項目中,我們經(jīng)常操作字符串,此時 js基礎(chǔ)知識 JavaScript 字符串中常用的方法 在JS中用單(雙)引號包裹起來的都是字符串 var str=welcome to my ho...

    keke 評論0 收藏0
  • JavaScript系列() - 收藏集 - 掘金

    摘要:函數(shù)式編程前端掘金引言面向?qū)ο缶幊桃恢币詠矶际侵械闹鲗Х妒健:瘮?shù)式編程是一種強調(diào)減少對程序外部狀態(tài)產(chǎn)生改變的方式。 JavaScript 函數(shù)式編程 - 前端 - 掘金引言 面向?qū)ο缶幊桃恢币詠矶际荍avaScript中的主導范式。JavaScript作為一門多范式編程語言,然而,近幾年,函數(shù)式編程越來越多得受到開發(fā)者的青睞。函數(shù)式編程是一種強調(diào)減少對程序外部狀態(tài)產(chǎn)生改變的方式。因此,...

    cfanr 評論0 收藏0
  • vue學習筆記(

    摘要:提供了兩種向組件傳遞參數(shù)的方式。子路由項路徑不要使用開頭,以開頭的嵌套路徑會被當作根路徑。路由實例的方法這里學習兩個路由實例的方法和。實際上,是通過不同的將這些資源加載后打包,然后輸出打包后文件。 一、vue-router 1、簡介 我們經(jīng)常使用vue開發(fā)單頁面應(yīng)用程序(SPA)。在開發(fā)SPA過程中,路由是必不可少的部分,vue的官方推薦是vue-router。單頁面應(yīng)用程序看起來好像...

    frank_fun 評論0 收藏0
  • vue學習筆記(

    摘要:提供了兩種向組件傳遞參數(shù)的方式。子路由項路徑不要使用開頭,以開頭的嵌套路徑會被當作根路徑。路由實例的方法這里學習兩個路由實例的方法和。實際上,是通過不同的將這些資源加載后打包,然后輸出打包后文件。 一、vue-router 1、簡介 我們經(jīng)常使用vue開發(fā)單頁面應(yīng)用程序(SPA)。在開發(fā)SPA過程中,路由是必不可少的部分,vue的官方推薦是vue-router。單頁面應(yīng)用程序看起來好像...

    lwx12525 評論0 收藏0
  • 【Unity使用UGUI實現(xiàn)王者榮耀UI界面()】游戲開始界面

    摘要:章節(jié)介紹本書分為章,包括概述開始之旅初識用與后端接口進行數(shù)據(jù)聯(lián)動淺析的使用生命周期和鉤子函數(shù)解析組件的靈活使用下的使用前端框架實戰(zhàn)上市集團門戶網(wǎng)站開發(fā)實戰(zhàn)基于框架的后臺管理系統(tǒng)開發(fā)。另外,本書也適合作為相關(guān)培訓機構(gòu)的教材使用。 ...

    stormjun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<