zoukankan      html  css  js  c++  java
  • javascript——DOM

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Node类型</title>
    
    </head>
    <body>
    <div id="items">
        <li class="item">1</li>
        <li class="item">2</li>
        <li class="item">3</li>
        <li class="item">4</li>
    </div>
    
    <img class="item" name="name1" src="" alt=""/>
    <img class="item" name="name2" src="" alt=""/>
    <img class="item" name="name3" src="" alt=""/>
    <img class="item" name="name4" src="" alt=""/>
    
    
    <div id="myDiv" name="12" data-ss="sss" data-aa="aa"></div>
    <script type="text/javascript">
        //每个节点都有一个nodeType属性,用于表明节点类型
        //由12个数值常量来表示
        //任何节点类型必居其一
        console.log("Node.ELEMENT_NODE:" + Node.ELEMENT_NODE);
        console.log("Node.ATTRIBUTE_NODE:" + Node.ATTRIBUTE_NODE);
        console.log("Node.TEXT_NODE:" + Node.TEXT_NODE);
        console.log("Node.CDATA_SECTION_NODE:" + Node.CDATA_SECTION_NODE);
        console.log("Node.ENTITY_REFERENCE_NODE:" + Node.ENTITY_REFERENCE_NODE);
        console.log("Node.ENTITY_NODE:" + Node.ENTITY_NODE);
        console.log("Node.PROCESSING_INSTRUCTION_NODE:" + Node.PROCESSING_INSTRUCTION_NODE);
        console.log("Node.COMMENT_NODE:" + Node.COMMENT_NODE);
        console.log("Node.DOCUMENT_NODE:" + Node.DOCUMENT_NODE);
        console.log("Node.DOCUMENT_TYPE_NODE:" + Node.DOCUMENT_TYPE_NODE);
        console.log("Node.DOCUMENT_FRAGMENT_NODE:" + Node.DOCUMENT_FRAGMENT_NODE);
        console.log("Node.NOTATION_NODE:" + Node.NOTATION_NODE);
    
    
        //每个节点都有一个ChildNodes属性,其中保存着NodeList对象,但是NodeList并不是一个Array的实例
        function convertToArray(nodes) {
            var array = null;
            try {
                array = Array.prototype.slice.call(nodes, 0);//针对非ie浏览器
            } catch (ex) {
                array = new Array();
                for (var i = 0; i < nodes.length; i++) {
                    array.push(nodes[i]);
                }
            }
            return array;
        }
    
    
        var parent = document.getElementById("items");
        var child = parent.childNodes;
        var arr = convertToArray(child);
        console.log(arr[0]);
    
        console.log(arr[0].ownerDocument);
    
    
        //appendChild(节点),会把节点插入到childNodes中的最后一位。并返回回来
        //insertBefore(要插入的节点,参照节点),会把要插入的节点插入到参照节点的前一个位置上
        //如果参照节点为Null时,则appendChild()和insertBefor()执行相同的操作
    
        //replaceChild(要插入的节点,要替换的节点),要替换的节点由这个方法返回并从文档中移除,同时由要插入的节点占据其位置
    
        //removeChild(要移除的节点)
    
    
        //coloneNode(是否执行深复制)用于创建调用这个方法节点的一个完全相同的副本
        //执行深复制:复制当前节点以及整个节点树;否:只复制节点本身
        //这个副本归文档所有,但是没有父节点(是个”孤儿“节点)
    
    
        //文档子节点
        var html = document.documentElement;//取得对<html>的引用 所有浏览器都支持
        console.log("document.documentElement:" + html);
        console.log("html===document.childNodes[1]:" + (html === document.childNodes[1]).toString());
        console.log("html===document.firstChild:" + (html === document.firstChild).toString());
    
        var body = document.body;//取得对body的引用 所有浏览器都支持
        console.log("body:" + body);
    
        var doctype=document.doctype;
        console.log("doctype:"+doctype);
    
        var title=document.title;
        console.log("title:"+document.title);
        document.title="this is title!";
        console.log("title:"+document.title);
    
    
        //关于网页请求 URL domain referrer
        var url=document.URL;
        console.log("url:"+url);
    
        var domain=document.domain;
        console.log("domain:"+domain);
    
        var referrer=document.referrer;
        console.log("referrer:"+referrer);
    
    
        //document.getElementById("id");
        var img= document.getElementsByTagName("img");
        //console.log(" img.namedItem(name1) :"+ img.namedItem("name1"));//取得name=name1的img
        console.log("img[name1]"+img["name1"]);
    
    
        //特殊集合
        var a= document.anchors;//包含文档中所有带name特性的<a>元素
        console.log("document.anchors:"+a);
    
        var imgs=document.images;//返回文档中所有的img元素,与document.getElementByTagName("img") 相同
        console.log("document.images:"+imgs);
    
        var forms=document.forms;//包含文档中所有的form元素,与document.getElementByTagName("form") 相同
        console.log("document.forms:"+forms);
    
        var links=document.links;//包含文档中带有href特性的<a>元素
        console.log("document.links:"+links);
    
        //DOM一致性检测
        var hasXmlDom=document.implementation.hasFeature("XML","1.0");
        console.log("document.implementation.hasFeature('XML','1.0'):"+hasXmlDom);
    
        //这个方法有的时候并不能准确的判断是否支持,所以最好除了检测hasFeature()之外,还同时使用能力检测
    
    
        //Element类型
        //nodeType 值是1
        //nodeName 的值是元素的标签名 等同于tagName
        //nodeValue 的值是null
        //parentNode 的可能值是 Document或Element
        var myDiv=document.getElementById("myDiv");
        console.log("tagName:"+myDiv.tagName);
        console.log("nodeName:"+myDiv.nodeName);
    
    
        function outPutAttribute(element){
            var array=new Array(),attrname,attrvalue, i,len;
            for(i=0,len=element.attributes.length;i<len;i++){
                attrname=element.attributes[i].nodeName;
                attrvalue=element.attributes[i].nodeValue;
                if(element.attributes[i].specified){
                    array.push(attrname+"=""+attrvalue+""");
                }
            }
            return array.join(" ");
        }
    
    
        var attr=outPutAttribute(document.getElementById("myDiv"));
        console.log("attr:"+attr);
    
    
    
        //Text类型
        //nodeType 的值是3
        //nodeName 的值为#text
        //nodeValue 值为节点包含的文本 data
        //parentNode 是一个element
        //没有(不支持)子节点
    
    
        //Comment类型
        //nodeType 的值为8
        //nodeName 的值是#comment
        //nodeValue 的值是注释的内容 data
        //parentNode 是element或document
        //没有(不支持)子节点
    
        //CDATASection类型
        //nodeType 的值为4
        //nodeName 的值是#cdata-section
        //nodeValue 的值是CDATA内的内容
        //parentNode 是element或document
        //没有(不支持)子节点
    
        //DocumentType类型
        //nodeType 的值为10
        //nodeName 的值是doctype的名称
        //nodeValue 的值是null
        //parentNode 是Document
        //没有(不支持)子节点
    
    
        //Attr类型
        //nodeType 的值为2
        //nodeName 的值是特性的名称
        //nodeValue 的值是特性的值
        //parentNode 是null
        //在HTML中没有(不支持)子节点
    
        //Attr对象有3个属性:
        //name 特性名称
        //value 特性的值 nodeValue
        //specified bool 用以区别特性是在代码中指定的还是默认的
    
    
    
        //DOM操作技术
        //动态脚本
        function loadScript(url){
            var script=document.createElement('script');
            script.src=url;
            script.type='text/script';
            document.body.appendChild(script);
        }
    
        function LoadScriptString(code){
            var script=document.createElement('script');
            script.type='text/script';
            try{
                script.appendChild(document.createTextNode(code));
            }catch(ex){
                script.text=code;
            }
            document.body.appendChild(script);
        }
    
        LoadScriptString('window.onload=function(){alert(11)}');
    
    
        //动态加载样式
        function loadCssString(css){
            var style=document.createElement('style');
            style.type='text/css';
            try{
                style.appendChild(document.createTextNode(css));
            }catch (ex){
                style.stylesheet.cssText=css;
            }
            var head=document.getElementsByTagName('head')[0];
            head.appendChild(style);
        }
    
    
        loadCssString('body{background:#f00;}');
    
    </script>
    </body>
    </html>
    

      

  • 相关阅读:
    数据科学工作者(Data Scientist) 的日常工作内容包括什么
    Python中的startswith和endswith函数使用实例
    Python中的startswith和endswith函数使用实例
    简单制作 OS X Yosemite 10.10 正式版U盘USB启动安装盘方法教程
    error splicing file: file too large解决方法
    Django authentication 使用方法
    什么是mixin
    Python: 什么是*args和**kwargs
    django migration使用指南
    python如何获取某模块的版本信息
  • 原文地址:https://www.cnblogs.com/goesby/p/4322108.html
Copyright © 2011-2022 走看看