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="" />
<img class="item" name="name2" src="" />
<img class="item" name="name3" src="" />
<img class="item" name="name4" src="" />

<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>

  

时间: 2024-10-13 00:27:53

javascript——DOM的相关文章

Javascript Dom编程艺术(第2版)读书笔记

Javascript Dom编程艺术这本书我看的是第2版的,真心觉得这本书不错,它将DOM编程的一些基本原则,及如何让Javascript代码在浏览器不支持的情况下,或浏览器支持了Javascript但用户禁用它的情况下做到平衡退化,让最基本的操作仍能顺利完成,以及如何让结构与样式分享做到真正的渐近增强叙述得很清楚,也很容易理解接受.我也是看了这本书之后,才对代码优化,结构,行为,样式有了进一步的加深理解. Javascript Dom编程艺术(第2版)读书笔记,布布扣,bubuko.com

《JavaScript+DOM变成艺术》的摘要(二)

//DOM: //对象是一种独立的数据集合,与某个特定对象相关联的变量被称为这个对象的属性,通过某个特定对象可以为之调用的函数被称为这个对象的方法 // //4个非常实用的DOM方法: //检索特定元素节点的方法: //document.getElementById:与document相关联的函数,在脚本代码里,函数后面必须跟有一组圆括号 //document.getElementsByTagName:返回的是一个数组 //,setAttribute,getAttribute alert(doc

JavaScript DOM编程艺术第一章:JavaScript简史

本系列的博客是由本人在阅读<JavaScript DOM编程艺术>一书过程中做的总结.前面的偏理论部分都是书中原话,觉得有必要记录下来,方便自己翻阅,也希望能为读到本博客的人提供一些帮助,所以 如果您也看过这本书,希望不要喷小的"抄袭",其实我也懒得敲这些文字也想简单粗暴地上代码,但是只有实践没有理论不容易自己理解,为避免误导,该"抄"的地方还是要"抄"的,哈哈~~ 一.JavaScript的起源 JavaScript是Netscap

前端学习系列之JavaScript DOM

JavaScript DOM简介 介绍 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.DOM编程: DOM 是关于如何获取.修改.添加或删除 HTML 元素的标准 HTML DOM节点树 通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问.所有 HTML 元素(节点)均可被修改,也可以创建或删除节点 理解几个概念,html标签没有父辈,没有兄弟,所以html标签为根标签.head标签是htm

Javascript DOM 编程艺术读书笔记16/04/01

愚人节快乐 开始用webstorm了,随着学习深入,代码越来越长,因为不借助ide还真是挺难的 今天发现了一个严重的误区,text和textNode是完全不同的两个概念,之前没有特别注意,写代码很容易跳过createTextNode直接用parentNode.appendChild(text) 单独拎出来晒一晒,以后引以为戒 Javascript DOM 编程艺术读书笔记16/04/01

JavaScript DOM编程艺术学习笔记(一)

嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推荐给想了解HDOM的相关人员!首先非常感谢作者写出了这么好的一本书,谢谢!书中的内容比较多,我仅记下我认为对自己和他人有所帮助的一些内容! 嗯,首先还是让代码来说话吧! 下面是两段此书中反复强调且通用的经典代码段 1:相当的经典和实用,尤其是当需要为页面加载函数绑定多个函数的时候 /** * [addLoad

JavaScript DOM实战:创建和克隆元素

DOM来创建和克隆元素. createElement()和createTextNode() createElement()和createTextNode()做的事情正如它们的名字所说的那样.最常见的JavaScript DOM方法实战-修改文档树中已经用过它们.当时的目的是把新创建的元素添加到文档树里,使它成为某个元素的最后一个子节点. 1. //创建一个li新元素 2. var newChild=document.createElement('li'); 3. //创建一个a 新元素 4. v

JavaScript DOM对象和JQuery对象相互转换

1.分析源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C

《JavaScript+DOM变成艺术》的摘要(一)

//保持良好的编程习惯:在同一脚本中,保持引号的一致性,都用单引 var mood = "don\"t worry"; //alert(mood); //数组:var arr=Array(), //以下这种形式为关联数组:为数组明确的给出下标方式,而不是直接为整数数字 var arr = Array(); arr['name'] = 'zouting'; arr['age'] = '24'; arr['address'] = 'hunan'; //alert(arr['age

《javascript dom编程艺术》笔记(二)——美术馆示例

这几天把这本书看完了,里面大部分知识我已经会了,所以看得就略简单,好多地方都没有再去动手去做,我知道这样是不对的,以后补吧. 现在我要做的是把这本书的笔记完结掉,不然总觉得有啥事没有做. 这个版本不是书中的最后版本,好像是第二版吧.后面还有动态创建结点的一版本,我已经在别的地方实践过了,就不再做了. 只贴出两个函数. //显示图片方法 function showPicture (whichpic) { //综合绑定的事件考虑,条件执行失败,希望浏览器可以让用户打开图片,因此在onclick处re