zoukankan      html  css  js  c++  java
  • JS操作DOM元素属性和方法

    属性名 描述
    childNodes 返回当前元素所有子元素的数组
    firstChild 返回当前元素的第一个下级子元素
    lastChild 返回当前元素的最后一个子元素
    nextSibling 返回紧跟在当前元素后面的元素
    nodeValue 指定表示元素值的读/写属性
    parentNode 返回元素的父节点
    previousSibling 返回紧邻当前元素之前的元素

    方法名 描述
    getElementById(id) (document) 获取有指定惟一ID属性值文档中的元素
    getElementsByTagName(name) 返回当前元素中有指定标记名的子元素的数组
    hasChildNodes() 返回一个布尔值,指示元素是否有子元素
    getAttribute(name) 返回元素的属性值,属性由name指定

    document.createElement(tagName) 文档对象上的createElement方法可以创建由tagName指定的元素。如果以串div作为方法参数, 就会生成一个div元素
    document.createTextNode(text) 文档对象的createTextNode方法会创建一个包含静态文本的节点
    <element>.appendChild(childNode) appendChild方法将指定的节点增加到当前元素的子节点列表(作为一个新的子节点)。例如, 可以增加一个option元素,作为select元素的子节点
    <element>.getAttribute(name)
    <element>.setAttribute(name, value)这些方法分别获得和设置元素中name属性的值
    <element>.insertBefore(newNode, targetNode)将节点newNode作为当前元素的子节点插到targetNode元素前面
    <element>.removeAttribute(name) 这个方法从元素中删除属性name
    <element>.removeChild(childNode) 这个方法从元素中删除子元素childNode
    <element>.replaceChild(newNode, oldNode) 这个方法将节点oldNode替换为节点newNode
    <element>.hasChildnodes() 这个方法返回一个布尔值,指示元素是否有子元素 Document--最顶层的节点,所有的其他节点都是附属于它的。
    DocumentType--DTD引用(使用<!DOCTYPE>语法)的对象表现形式,它不能包含子节点。
    DocumentFragment--可以像Document一样来保存其他节点。
    Element--表示起始标签和结束标签之间的内容,例如<tag></tab>或者<tag/>。这是唯一可以同时包含特性和子节点的节点类型。
    Attr--代表一对特性名和特性值。这个节点类型不能包含子节点。
    Text--代表XML文档中的在起始标签和结束标签之间,或者CDataSection内包含的普通文本。这个节点类型不能包含子节点。
    CDataSection--<![CDATA[]]>的对象表现形式。这个节点类型仅能包含文本节点Text作为子节点。
    Entity--表示在DTD中的一个实体定义,例如<!ENTITY foo"foo">。这个节点类型不能包含子节点。
    EntityReference--代表一个实体引用,例如&quot;。这个节点类型不能包含子节点。
    ProcessingInstruction--代表一个PI。这个节点类型不能包含子节点。
    Comment--代表XML注释。这个节点不能包含子节点。
    Notation--代表在DTD中定义的记号。这个很少用到。
    Node接口定义了所有节点类型都包含的特性和方法。  特性/方法 类型/返回类型 说明  
    nodeName String 节点的名字;根据节点的类型而定义  
    nodeValue String 节点的值;根据节点的类型而定义  
    nodeType Number 节点的类型常量值之一  
    ownerDocument Document 指向这个节点所属的文档  
    firstChild Node 指向在childNodes列表中的第一个节点  
    lastChild Node 指向在childNodes列表中的最后一个节点  
    childNodes NodeList 所有子节点的列表  
    previousSibling Node 指向前一个兄弟节点;如果这个节点就是第一个兄弟节点,那么该值为null  
    nextSibling Node 指向后一个兄弟节点;如果这个节点就是最后一个兄弟节点,那么该值为null  
    hasChildNodes() Boolean 当childNodes包含一个或多个节点时,返回真  attributes NamedNodeMap 包含了代表一个元素的特性的Attr对象;仅用于Element节点  
    appendChild(node) Node 将node添加到childNodes的末尾  
    removeChild(node) Node 从childNodes中删除node  
    replaceChild(newnode,oldnode) Node 将childNodes中的oldnode替换成newnode  
    insertBefore(newnode,refnode) Node 在childNodes中的refnode之前插入newnodd  
    除节点外,DOM还定义了一些助手对象,它们可以和节点一起使用,但不是DOM文档必有的部分。  
    NodeList--节点数组,按照数值进行索引;用来表示和一个元素的子节点。  NamedNodeMap--同时使用数值和名字进行索引的节点表;用于表示元素特性。

     

    二、jquery操作元素:
    addClass() 向匹配的元素添加指定的类名。
    attr() 设置或返回匹配元素的属性和值。
    hasClass() 检查匹配的元素是否拥有指定的类。
    html() 设置或返回匹配的元素集合中的 HTML 内容。
    removeAttr() 从所有匹配的元素中移除指定的属性。
    removeClass() 从所有匹配的元素中删除全部或者指定的类。
    toggleClass() 从匹配的元素中添加或删除一个类。
    val() 设置或返回匹配元素的值。
    创建新的元素

    下面介绍两种正确创建元素的方法.

    1.使用HTML DOM创建元素

    var p = document.createElement("p");
    p.innerText = "this is param";
    2.使用jQuery函数创建元素

    $("<p>this is a param</p>")
    我们此处使用了jQuery核心类库中的一个方法:

    jQuery(html,ownerDocument)
    return:jQuery
    根据HTML原始字符串动态创建Dom元素.
    此处,我们要注意,如果传入的是一个完整的HTML字符串,jQuery内部使用的也是innerHTML.所以,我们参见另一种方法来创建元素
    //注意:
    // 不要写成$("p").html("this is a param");
    $("<p/>").html("this is a param");
    将元素添加至对象上

    添加元素时,我们要注意,应该在页面加载完元素后,才可以修改Dom的结构,至少也应该是需要被修改的元素被加载完后,再修改该元素.

    我们可以使用下面两种方法来将元素添加至Dom

    window.onload = function () {
    var p = document.createElement("p");
    p.innerHTML = "this is a param";

    document.getElementById("dv1").appendChild(p);
    }
    此段代码的缺点是,加载行为会在页面加载完毕之后再执行,即:如果页面上有大量图片或许多资源时,我们可能会因此等很久.

    解决办法是,我们在该dom元素加载完毕后,即对其进行添加行为.jQuery函数可实现此功能:

    $(function () {
    var p = document.createElement("p");
    p.innerHTML = "this is a param";

    document.getElementById("dv1").appendChild(p);
    });
    常用函数

    常用的函数比较多,按照帮助文档的分类罗列,我们来一个一个了解函数的使用方法.

    1.内部插入

    函数名 描述 举例 结果
    append(content) 向每个匹配的元素内部追加内容
    $("#dv1").append("<b>this is append</b>");
    使用以下样式:
    div
    {
    display:inline;
    border:solid 1px silver;
    margin:2px;
    line-height:25px;
    }
    使用效果如下:
    image
    prepend(content) 向每个匹配的元素内部前置内容
    $("#dv2").prepend("<b>this is prepend</b>");
    appendTo(content) 把所有匹配的元素追加到另一个指定的元素集合中
    $("<b>this is appendTo</b>").appendTo($("#dv3"));
    prependTo(content) 将每个匹配的元素前置到另一个指定元素集合中
    $("<b>this is prependTo</b>").prependTo($("#dv4"));
    注意:

    上述方法均是在元素内部进行操作,append是添加到元素内部的后面,而prepend是添加到元素内部的前面.

    append和prepend均是主体A添加B,而appendTo和prependTo均是B添加至A主体.

    2.外部插入

    函数名 描述 举例 结果
    after(content) 在每个匹配的元素后插入内容
    $("#dv1").before("<b>this is before</b>");
    使用以下样式:
    div
    {
    display:inline;
    border:solid 1px silver;
    margin:2px;
    line-height:25px;
    }
    效果如下:
    image
    before(content) 在每个匹配的元素前插入内容
    $("#dv2").after("<b>this is after</b>");
    insertAfter(content) 把所有匹配的元素插入指定的元素集合后面
    $("<b>this is insertAfter</b>").insertAfter($("#dv3"));
    insertBefore(content) 把所有匹配的元素插入指定的元素集合前面
    $("<b>this is insertBefore</b>").insertBefore($("#dv4"));

    3.包裹

    函数名 描述 举例 备注
    wrap(elem) 把匹配的元素用其他元素匹配的结构化标记包装起来
    $("b").wrap($("div"));
    生成源码:
    <div>
    <b>this is b1</b></div>
    <div>
    <b>this is b2</b></div>
    <div>
    wrap(html) 把匹配的元素用其他元素匹配的结构化标记包装起来
    $("b").wrap("<div></div>");
    wrapAll(elem) 将所有匹配的元素用单个元素匹配起来
    $("b").wrapAll($("div"));
    生成源码:
    <DIV>
    <B>this is b1</B>
    <B>this is b2</B>
    </DIV>
    wrapAll(html) 将所有匹配的元素用单个元素匹配起来
    $("b").wrapAll("<div></div>");
    wrapInner(elem) 将匹配元素的内容用一个Dom元素包装起来
    $("p").wrapInner($("b"));
    <p>
    <b>this is p1</b>
    </p>
    wrapInner(html) 将匹配元素的内容用一个Dom元素包装起来
    $("p").wrapInner("<b></b>");
    注意:

    wrap,wrapAll,wrapInner三者之间的区别.

    wrap是为每个匹配的元素都包装了一个格式化标记.

    wrapAll是将所有匹配的元素用一个格式化标记包装起来

    4.替换

    函数名 描述 举例 备注
    replaceAll(selector) 用匹配的元素替换掉所有selector匹配到的元素
    $("<p>this is param</p>").replaceAll($("b"));

    replaceWith(content) 将匹配的元素替换成指定的HTML或Dom元素
    $("b").replaceWith("<p>this is param</p>");

    注意:

    此两个函数与append 和 appendTo相似.

    replaceAll是满足条件的A元素集替换匹配的B元素集

    replaceWith(content)是A元素集被content元素集替换

    5.删除

    函数名 描述 举例 备注
    empty() 删除匹配的集合的所有子节点
    <div id="dv1">
    dv1<p>
    this is a param</p>
    </div>
    <div>
    dv2</div>
    <b>this is b</b>
    <script type="text/javascript">
    $("div").empty();
    </script>
    清除div下所有的子元素.
    页面源码:
    <div id="dv1">
    </div>
    <div>
    </div>
    <b>this is b</b>
    remove([expr]) 从Dom中删除所有匹配的元素
    expr:用于筛选元素的jQuery表达式
    <div id="dv1">
    dv1<p>
    this is a param</p>
    </div>
    <div>
    dv2</div>
    <b>this is b</b>
    <script type="text/javascript">
    $("div").remove();
    </script>

    删除页面中所有的div
    页面源码:
    <B>this is b</B>
    6.复制

    函数名 描述 举例 结果
    clone() 克隆匹配的元素,并且选中这些克隆的副本
    <div id="dv1">dv1</div>
    <b this is b</b>
    <script type="text/javascript">
    $("b").clone().insertBefore($("#dv1"));
    </script>

    clone(true) 克隆匹配的元素及其所有的事件,并选中这些克隆的副本
    <div id="dv1">dv1</div>
    <b onclick="alert(this.innerHTML)">this is b</b>
    <script type="text/javascript">
    $("b").clone(true).insertBefore($("#dv1"));
    </script>

     

     参考自:1、百度文库

         2、http://www.cnblogs.com/oneword/archive/2010/11/10/1873238.html

  • 相关阅读:
    Windows10 iis10 arr webfarm
    两个command的疑惑
    关于controller和apicontroller的跨域实现过滤器的不同
    抽象工厂
    c# 字体库跨域解决
    c# 父类的引用指向子类的实例
    垂直居中
    扇形导航
    2D变换
    京东放大镜效果
  • 原文地址:https://www.cnblogs.com/yuanqiao/p/4275026.html
Copyright © 2011-2022 走看看