笔记 js 基础笔记(Dom操作)

共同学习js,不对的地方欢迎大家指正。

js Dom 操作

  document获取节点的基本方法
    1.document.getElementById(‘id‘);                                  //通过id来获取元素,返回指定的唯一元素。
    2.document.getElementsByName("name");                      //通过name来获取元素,返回name=‘name‘的集合。
    3.document.getElementsByClassName("classname")         //用classname来获取元素,返回的是一个class="classname"的集合(不兼容IE8及以下)。
    4.document.getElementsByTagName(‘div‘);                     //用元素的标签获取元素,返回所有标签=“div”的集合。

getElementsByClassName不兼容ie8及以下,所以需要做兼容,搜集到以下两种方式:

//兼容IE getElementsByClassName取标签 方法一
//写成一个函数,每次调用这个函数
function getElementsByClassName(className,root,tagName) {    //root:父节点,tagName:该节点的标签名。 这两个参数均可有可无
    if(root){
        root=typeof root=="string" ? document.getElementById(root) : root;
    }else{
        root=document.body;
    }
    tagName=tagName||"*";
    if (document.getElementsByClassName) {                    //如果浏览器支持getElementsByClassName,就直接的用
        return root.getElementsByClassName(className);
    }else {
        var tag= root.getElementsByTagName(tagName);    //获取指定元素
        var tagAll = [];                                    //用于存储符合条件的元素
        for (var i = 0; i < tag.length; i++) {                //遍历获得的元素
            for(var j=0,n=tag[i].className.split(‘ ‘);j<n.length;j++){    //遍历此元素中所有class的值,如果包含指定的类名,就赋值给tagnameAll
                if(n[j]==className){
                    tagAll.push(tag[i]);
                    break;
                }
            }
        }
        return tagAll;
    }
}

//兼容IE getElementsByClassName 方法2
//重新定义getElementsByClassName方法
if(!document.getElementsByClassName){//判断是否是ie
  document.getElementsByClassName = function(className, element){
    var children = (element || document).getElementsByTagName(‘*‘);
    var elements = new Array();
    for (var i=0; i<children.length; i++){
      var child = children[i];
      var classNames = child.className.split(‘ ‘);
      for (var j=0,len=className.length; j<len; j++){
        if (classNames[j] == className){
          elements.push(child);
          break;
        }
      }
    }
    return elements;
  };
}

  js节点操作方法

  1.获取节点
        document.documentElement        //获取整个Html Dom结构
        element.childNodes                     //得到element的全部子节点
        element.parentNode                    //得到element的父节点
        element.nextSibling                    //得到element的下一个兄弟节点
        element.previousSibling              //得到element的上一个兄弟节点
        element.firstChild                       //得到element的第一个节点
        element.lastChild                        //得到element的最后一个节点
        *        example : console.log(element.nextSibling.previousSibling);
       
        2.节点 获取/设置 属性
        *element.setAttribute("class","class1")         //设置元素属性
        *element.getAttribute("class")                    //获取元素属性
        *element.removeAttribute("class")              //删除元素属性
        *      example : element.parentNode.setAttribute("id","bannerUl");

3.创建节点
        createElement()                                          //创建标签名为tagname的元素
        createTextNode()                                        //创建包含文本text的文本节点
        createDocumentFragment()                         //创建文档碎片节点               
        *         example: document.createElement("p");       
        *       example: document.createTextNode("Hellow world");
        *     
   document.createDocumentFragment()说白了就是为了节约使用DOM。每次JavaScript对DOM的操作都会
改变页面的变现,并重新刷新整个页面,从而消耗了大量的时间。为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次
性添加到document中。
       
        4.添加、移除、替换、复制节点。
        element.appendChild()                                           //向节点的子节点列表末尾增加一个新的节点
        element.insertBefore(newchild,refchild)                    //向某个子节点的前面插入一个节点    newchild新的节点  refchild指定的节点
        element.removeChild()                                           //删除某个节点 只能删除下一级的节点
        element.replaceChild(newnode,oldnode)                   //替换DOM节点的方法     newnode新的节点      oldnode需要替换的节点
        element.cloneNode(Boolean)                                   //设置为 true,克隆节点及其属性,以及后代, 设置为 false,则只克隆节点及其属性,不克隆后代节点
        element.cloneNode                                             
     //不同于一般的赋值 var li  =
childodeClear(ul2).childNodes[0].cloneNode(true) != var li  =
childodeClear(ul2).childNodes[0]; 后者是赋值一个内存地址,所以操作会改变原来的节点

常见问题:
        用element.childNodes获取一个节点的子元素集合的时候(ul获取li集合),如果里面有很多空格/回车,子集的长度会不符合子集个数。需要手动清除回车、空格

<div id="banner">
        <ul class="ul">
            <li><a>1</a></li>

            <li><a>2</a></li>

            <li class="li3"><a>3</a></li>

            <li><a><i>4sdfsfsdfsfsdfsfsfsdf</i></a></li>
        </ul>
</div>
<script type="tex

  

时间: 2024-11-05 14:41:53

笔记 js 基础笔记(Dom操作)的相关文章

JS基础与DOM操作(一)

1.HTML元素标记 - 超文本标记语言 决定你网页中有哪些东西 alert("")警告对话框,作用是弹出一个警告对话框 confirm("")确定对话框,作用是弹出一个可供选择的确定对话框, 点击确定之后,它返回true,点击取消返回flase,可用变量来接收. prompt("")作用是弹出一个可以输入内容的对话框. 2.CSS - 样式表 决定你网页中的这些元素标记的样式和布局 3.JS - JavaScript 决定你网页中的这些元素标记

js基础和dom操作

1.HTML元素标记 - 超文本标记语言 决定你网页中有哪些东西 2.CSS - 样式表 决定你网页中的这些元素标记的样式和布局用:<style type="text/css"></style> 3.JS - JavaScript 决定你网页中的这些元素标记的功能和特效.只要放在HTML里就可以.用:<script type="text/javascript"><script> alert() 弹出警告对话框 :con

js基础篇(dom操作,字符串,this等)

首先我们来看这样一道题 <div id='foo' class='aa bb cc'></div>写出如何判断此div中是否含有aa(注:aa成立,aaa不成立) 首先,我们一定是取出class里面的这个字符串,然后我们想办法判断出这个字符串里面是否存在aa,并且只有aa. 我给大家提供了三种方法,第一种利用getAttribute方法,第二种利用getElementByClassName,第三种就是正则匹配了. 代码如下: /* ***用getAttribute方法实现 */ v

原声js基础笔记

原声js基础笔记 前端开发群: 欢迎加入. <!DOCTYPE html> <html> <head> <title>设置一个元素是否可见</title> <meta charset="utf-8"> </head> <style type="text/css"> .tips{width:370px;background:#CCC;display:none;} </

一份不错的vue.js基础笔记!!!!

第一章 Vue.js是什么? Vue(法语)同view(英语) Vue.js是一套构建用户界面(view)的MVVM框架.Vue.js的核心库只关注视图层,并且非常容易学习,非常容易与其他库或已有的项目整合. 1.1 Vue.js的目的 Vue.js的产生核心是为了解决如下三个问题: 解决数据绑定的问题: Vue.js框架生产的主要目的是为了开发大兴单页面应用(SPA:Single Page Application) Angular.js中对PC端支持的比较良好,但是对移动端支持就一般.而Vue

js day43 Jquery入门(回顾js,Jquery选择器,dom操作)

1     Javascript回顾 问题:Javascript能做什么? 1. 获取操作dom <style> .aa{ background:red} .bb{ background:blue} </style> <body> <div id="dv" title="提示信息" class="aa">AAAAAAAAA</div> <button onclick="f

js基础复习---数组操作

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="keywords" content="js数组操作"> <meta name="description" content="js基础之数组api练习"> <title

JS - JavaScript和DOM操作

1.HTML元素标记 - 超文本标记语言 决定你网页中有哪些东西 2.CSS - 样式表 决定你网页中的这些元素标记的样式和布局 3.JS - JavaScript 决定你网页中的这些元素标记的功能和特效 3.1.onclick:单机 ondblclick:双击 function 执行函数 alert 显示框只有确定 confirm 显示框有确定和取消 prompt 显示框下面填写内容 var 万能变量 <body> <a onclick="a()"></

js中的DOM操作(一)——查看及设置节点

一.前言 DOM 是 W3C(World Wide Web Consortium)标准.同时也 定义了访问诸如 XML 和 HTML 文档的标准: DOM是一个使程序和脚本有能力动态地访问和更新文档的内容.结构以及样式的平台和语言中立的接口. 在HTML和JavaScript的学习中,DOM操作可谓时重中之重.今天,小编就领着大家来看看DOM操作是个什么样子!! 二.DOM节点  DOM节点分为三大类:元素节点.属性节点.文本节点: 而我们心心念念想知道的DOM树就长酱紫!