亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

原生JS實現(xiàn)幾個常用DOM操作API實例

 更新時間:2017年01月19日 09:22:59   投稿:jingxian  
下面小編就為大家?guī)硪黄鶭S實現(xiàn)幾個常用DOM操作API實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

原生實現(xiàn)jQuery的sibling方法

<body>
<span>我是span標(biāo)簽</span>
<div>我是一個div</div>
<h1 id="h1">我是標(biāo)題</h1>
<p>我是一個段落</p>
<script type="text/javascript">
//獲取元素的兄弟節(jié)點
function siblings(o){//參數(shù)o就是想取誰的兄弟節(jié)點,就把那個元素傳進(jìn)去
var a = [];//定義一個數(shù)組,用來存儲o的兄弟元素
//previousSibling返回位于相同節(jié)點樹層級的前一個元素
var p = o.previousSibling;
while(p){//先取o的前面的兄弟元素 判斷有沒有上一個兄弟元素,如果有則往下執(zhí)行,p表示previousSibling
if(p.nodeType === 1){
a.push(p);
}
p = p.previousSibling//最后把上一個節(jié)點賦給p
}
a.reverse();//把順序反轉(zhuǎn)一下,這樣元素的順序就是按先后的了
//nextSibling返回位于相同節(jié)點樹層級的下一個節(jié)點
var n = o.nextSibling;//再取o下面的兄弟元素
while(n){//判斷有沒有下一個兄弟結(jié)點,n是nextSibling的意思
if(n.nodeType === 1){//判斷是否是元素節(jié)點
a.push(n);
}
n = n.nextSibling;
}
return a//最后按從老大到老小的順序,把這一組元素返回
}
var oH = document.getElementById("h1");
console.log(siblings(oH));//[span, div, p, script]
</script>
</body>

原生實現(xiàn)jQuery的class選擇器

//用數(shù)組模擬jQuery的class選擇器
function getClassName(ParentId,NewClassName){
var AllClassElem = ParentId.getElementsByTagName(“*”);
var AllClass = [];
var i=0;
for(var i=0; i<AllClassElem.length; i++){
if(AllClassElem[i].className == NewClassName){
AllClass.push(AllClassElem[i]);
}
}
return AllClass;


}
//用法:
var PElementId=document.getElementById("bar");
var buttons = getClassName(PElementId,"sco");
//取id="bar"下class="sco"的元素;

getElementsByClassName()

/**
* 獲取指定類名的元素對象集合
* @param {Object} node 父節(jié)點
* @param {String} classname 指定類名 
* @return {[Object]}目標(biāo)對象集合
*/
function getElementsByClassName(node,classname) {
//如果瀏覽器支持則直接使用
 if (node.getElementsByClassName) { 
  return node.getElementsByClassName(classname);
 } else {
  return (function getElementsByClass(searchClass,node) {
    if ( node == null )
     node = document;
    var classElements = [],
      els = node.getElementsByTagName("*"),
      elsLen = els.length,
      pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"), i, j;

    for (i = 0, j = 0; i < elsLen; i++) {
     if ( pattern.test(els[i].className) ) {
       classElements[j] = els[i];
       j++;
     }
    }
    return classElements;
  })(classname, node);
 }
}

addLoadEvent()

/**
* 方便的將在文檔加載后運行的函數(shù)添加到window.onload中
* @param {function} func 待運行函數(shù)
*/
function addLoadEvent(func){
  var oldOnload = window.onload;
  //typeof 返回String類型
  if(typeof window.onload != 'function'){
    window.onload = func;
  }else{
    window.onload = function(){
      oldOnload();
      func();
    }
  }
}

addClass()

/**
* 為指定元素結(jié)點添加新類名
* element 元素結(jié)點
* value 類名
*/
function addClass(element,value){
//如果元素類名為空,直接將value賦值給相應(yīng)的元素類名
  if(!element.className){
    element.className = value;
  }else{
  //否則需要將類名之間用空格隔開
    newClassName = element.className;
    //多個類名間添加空格
    newClassName += ' ';
    newClassName += value;
    element.className = newClassName;
  }
}

insertAfter()

/**
* 在目標(biāo)元素結(jié)點后面插入新的元素結(jié)點
* newElement 待插入的新元素結(jié)點
* targetElement 目標(biāo)元素結(jié)點
*/
function insertAfter(newElement,targetElement){
  var parent = targetElement.parentNode;
  if(parent.lastChild == targetElement){
    parent.appendChild(newElement);
  }else{
    parent.insertBefore(newElement,targetElement.nextSibling);
  }
}

getNextElement()

/**
* 獲取下一個元素結(jié)點
* @param {Object} node 兄結(jié)點
* @return {Object || null}下一個元素結(jié)點或未獲取到
*/
function getNextElement(node){
    var sibNode = node.nextSibling;
  if (sibNode.nodeType == 1) {
    return node;
  }
  if (sibNode.nextSibling) {
    //遞歸調(diào)用
    return getNextElement(node.nextSibling);
  }
  return null;
}

以上這篇原生JS實現(xiàn)幾個常用DOM操作API實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS中作用域和變量提升(hoisting)的深入理解

    JS中作用域和變量提升(hoisting)的深入理解

    相信大家也都發(fā)現(xiàn)了,在網(wǎng)上關(guān)于JS的變量和作用域的文章有很多,但真正能講清楚,能深入理解的文章很少。在閱讀了很多人的文章以后,我決定綜合起來,結(jié)合實際代碼,希望能夠以一個比較清楚完整的方式讓大家真正理解。有需要的朋友們下面來一起看看吧。
    2016-10-10
  • javascript實現(xiàn)在網(wǎng)頁任意處點左鍵彈出隱藏菜單的方法

    javascript實現(xiàn)在網(wǎng)頁任意處點左鍵彈出隱藏菜單的方法

    這篇文章主要介紹了javascript實現(xiàn)在網(wǎng)頁任意處點左鍵彈出隱藏菜單的方法,設(shè)計鼠標(biāo)事件及css樣式操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 整理Javascript函數(shù)學(xué)習(xí)筆記

    整理Javascript函數(shù)學(xué)習(xí)筆記

    整理Javascript函數(shù)學(xué)習(xí)筆記,之前一系列的文章是跟我學(xué)習(xí)Javascript,本文就是進(jìn)一步學(xué)習(xí)Javascript函數(shù),希望大家繼續(xù)關(guān)注
    2015-12-12
  • [全兼容哦]--實用、簡潔、炫酷的頁面轉(zhuǎn)入效果loing

    [全兼容哦]--實用、簡潔、炫酷的頁面轉(zhuǎn)入效果loing

    [全兼容哦]--實用、簡潔、炫酷的頁面轉(zhuǎn)入效果loing...
    2007-05-05
  • JS 對象(Object)和字符串(String)互轉(zhuǎn)方法

    JS 對象(Object)和字符串(String)互轉(zhuǎn)方法

    下面小編就為大家?guī)硪黄狫S 對象(Object)和字符串(String)互轉(zhuǎn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • Yii2使用Bootbox插件實現(xiàn)自定義彈窗

    Yii2使用Bootbox插件實現(xiàn)自定義彈窗

    Bootbox.js 是一個小型的 JavaScript 庫用來創(chuàng)建簡單的可編程對話框,基于 Twitter 的 Bootstrap 開發(fā)。今天我們就來研究下,如何使用bootbox插件來實現(xiàn)自定義彈窗。
    2015-04-04
  • 前端printjs的使用實戰(zhàn)案例

    前端printjs的使用實戰(zhàn)案例

    Print.js是一個小的javascript庫,可幫助您從網(wǎng)絡(luò)上打印,這篇文章主要給大家介紹了關(guān)于前端printjs的使用實戰(zhàn)案例,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • JavaScript返回當(dāng)前會話cookie全部鍵值對照的方法

    JavaScript返回當(dāng)前會話cookie全部鍵值對照的方法

    這篇文章主要介紹了JavaScript返回當(dāng)前會話cookie全部鍵值對照的方法,涉及javascript操作cookie的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • JavaScript實現(xiàn)答題評分功能頁面

    JavaScript實現(xiàn)答題評分功能頁面

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)答題評分功能頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • JS實現(xiàn)圖片放大縮小的方法

    JS實現(xiàn)圖片放大縮小的方法

    這篇文章主要介紹了JS實現(xiàn)圖片放大縮小的方法,結(jié)合實例形式分析了javascript動態(tài)操作頁面元素屬性的相關(guān)技巧,需要的朋友可以參考下
    2017-02-02

最新評論