DOM: document object model
DOM中元素獲取的方式
- id獲取: var oDiv = document.getElementById("div1");
- class獲?。篸ocument.getElementsByClassName();
- tagName:可以限定范圍的獲取元素
- querySelect
- querySelectAll
- tag
- '#id
- .class
- 注意:querySelectAll獲取到的是一組元素,即使是頁面中唯一的ID,也得加[]獲??;
節(jié)點(diǎn)
| 節(jié)點(diǎn)名 |
nodeType |
nodeName |
nodeValue |
| 文本節(jié)點(diǎn) |
3 |
#text |
文本內(nèi)容 |
| 注釋節(jié)點(diǎn) |
8 |
#comment |
注釋內(nèi)容 |
| 元素節(jié)點(diǎn) |
1 |
大寫的標(biāo)簽名 |
null |
| document節(jié)點(diǎn) |
9 |
#document |
null |
節(jié)點(diǎn)的關(guān)系
- children 子節(jié)點(diǎn)
- 一般情況兼容,但是在IE6-8下,如果有注釋的話,拿到的是不準(zhǔn)確的;
- childNodes 拿到所有的子節(jié)點(diǎn)
- parentNode 父元素;拿到的是結(jié)構(gòu)上的父級(jí);
- previousSibling 上一個(gè)哥哥節(jié)點(diǎn)
- previousElementSiblings 上一個(gè)哥哥節(jié)點(diǎn)
- nextSibling 下一個(gè)弟弟節(jié)點(diǎn)
- getChildren 獲取當(dāng)前容器下,所有的子元素
<div class="wrap">
<div>第一個(gè)div</div>
<!--發(fā)生的發(fā)生的發(fā)生-->
<div>第二個(gè)div</div>
<a href="#">第1個(gè)a元素</a>
<a href="#">第2個(gè)a元素</a>
<!--是的發(fā)生的發(fā)展的發(fā)-->
<a href="#">第3個(gè)a元素</a>
是的方法阿魏酸
<div>第三個(gè)div</div>
<div>第四個(gè)div</div>
是打發(fā)打發(fā)所發(fā)生的
<span>第1個(gè)span</span>
<!--水電費(fèi)水電費(fèi)v水電費(fèi)水電費(fèi)-->
<span>第2個(gè)span</span>
<span>第3個(gè)span</span>
</div>
<script>
//需求:獲取限定范圍內(nèi)的所有子節(jié)點(diǎn)
/*
* 1. 目的:獲取一定范圍內(nèi)的所有子節(jié)點(diǎn)
* 2. 參數(shù):1)范圍變量 2)獲取的節(jié)點(diǎn)->可傳可不傳
* 3. 返回值:將最后獲取到的子節(jié)點(diǎn)以數(shù)組的形式返回
*/
/*
* @功能 -> 獲取限定范圍內(nèi)的所有子節(jié)點(diǎn)或特定的子節(jié)點(diǎn)
* @getChildren -> function getChildren(){}
* @oParent -> 父級(jí)元素,即范圍
* @tagName -> 所要獲取的元素子節(jié)點(diǎn) -> 可傳可不傳
*/
// 1. 確定范圍,通過getElementsByClassName獲取到的都是一個(gè)數(shù)組,只有一個(gè)的時(shí)候也需要用[0]來獲取最終的元素
var oWarp = document.getElementsByClassName('wrap')[0];
function getChildren(oParent,tagName){
var ary = [];
var aChild = oParent.childNodes;
for(var i=0;i<aChild.length;i++){
if(aChild[i].nodeType === 1){
tagName ? aChild[i].tagName.toLowerCase() == tagName.toLowerCase() && ary.push(aChild[i]): typeof tagName == "undefined" && ary.push(aChild[i]);
}
}
return ary;
}
//var aChildren = getChildren(oWarp);
</script>
- prev() 獲取當(dāng)前元素的上一個(gè)哥哥元素
<div class="wrap">
<div>第一個(gè)div</div>
<!--發(fā)生的發(fā)生的發(fā)生-->
<div>第二個(gè)div</div>
<a href="#">第1個(gè)a元素</a>
<a href="#">第2個(gè)a元素</a>
<!--是的發(fā)生的發(fā)展的發(fā)-->
<a href="#">第3個(gè)a元素</a>
是的方法阿魏酸
<div>第三個(gè)div</div>
<div>第四個(gè)div</div>
是打發(fā)打發(fā)所發(fā)生的
<span>第1個(gè)span</span>
<!--水電費(fèi)水電費(fèi)v水電費(fèi)水電費(fèi)-->
<span>第2個(gè)span</span>
<span>第3個(gè)span</span>
</div>
<script>
/*
* 1. 目的:獲取當(dāng)前元素的上個(gè)一個(gè)哥哥元素
* 2. 參數(shù):1)當(dāng)前元素
* 3. 返回值:返回當(dāng)前元素的上一個(gè)哥哥元素
**/
/*
* @功能 ->獲取當(dāng)前元素的上個(gè)一個(gè)哥哥元素
* @curEle -> 當(dāng)前元素
*
**/
/*
* 1. 獲取當(dāng)前元素
* 2. 獲取當(dāng)前元素的上一個(gè)節(jié)點(diǎn)
*/
var oDiv = document.getElementsByTagName("div")[0];
var aDiv = oDiv.getElementsByTagName('div');
function prev(curEle){
if(curEle.previousElementSibling){
return curEle.previousElementSibling;
}
var prev = curEle.previousSibling;
while(prev && prev.nodeType !== 1){
prev = prev.previousSibling;
}
return prev;
}
</script>
next() 獲取當(dāng)前元素的下一個(gè)弟弟元素
<div class="wrap">
<div>第1個(gè)div元素</div>
<div>第2個(gè)div元素</div>
<div>第3個(gè)div元素</div>
<span>第1個(gè)span元素</span>
<span>第2個(gè)span元素</span>
</div>
<script>
var oWrap = document.getElementsByClassName('wrap')[0];
var aIndex = oWrap.getElementsByTagName('div');
function next(curEle){
if(curEle.nextElementSibling){
return curEle.nextElementSibling;
}
var next = curEle.nextSibling;
while(next && next.nodeTyp !== 1){
next = next.nextSibling;
}
return next;
}
</script>
demo : 九九乘法表
<style>
*{
margin: 0;
padding: 0;
list-style: none;
}
ul li{
height: 40px;
line-height: 40px;
font-size: 20px;
cursor: pointer;
}
ul li.change{
background: lightcyan;
}
ul li.bg0{
background: lightblue;
}
ul li.bg1{
background: lightskyblue;
}
ul li.bg2{
background: lightsteelblue;
}
ul li span{
display: inline-block;
width: 90px;
text-align: center;
}
</style>
<ul></ul>
<script>
(function(){
var oUl = document.getElementsByTagName('ul')[0];
var aLi = oUl.getElementsByTagName('li');
var str = '';
for(var i=1;i<10;i++){
str += "<li>";
for(var j=1;j<=i;j++){
str += "<span>"+ j + "x" + i + "=" + j*i +"</span>";
}
str += "</li>";
}
oUl.innerHTML = str;
// 思路一:自定義屬性
/* for(var i=0;i<aLi.length;i++){
aLi[i].className = 'bg'+ i%3;
aLi[i].bg = 'bg' + i%3;
aLi[i].onmouseover = function(){
this.className = 'change';
}
aLi[i].onmouseout = function(){
this.className = this.bg;
}
}*/
// 思路2: 變量
for(var i=0;i<aLi.length;i++){
aLi[i].className = "bg" + i%3;
var oldBg = null;
aLi[i].onmouseover = function(){
oldBg = this.className;
this.className = 'change';
}
aLi[i].onmouseout = function(){
this.className = oldBg;
}
}
})()
</script>
BOM的知識(shí)-window.location
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。