JavaScript DOM编程艺术之第8章——充实文档的内容相关

文章目录

    • HTML相关代码
      • 1.显示“缩略语列表”
      • 2.显示”文献来源链接表“
      • 3.显示”快捷键清单“
      • 4.addLoadEvent

HTML相关代码

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>forthtitle>
head>
<body>
    <h1> What is the Document Object Model?h1>
    <p>
        thie <abbr title="World Wide Web Consortium">W3Cabbr> defines the <abbr title="Document Object Model">DOMabbr> as:
    p>
    <blockquote cite="http://www.w3.org/DOM/">
        <p>
            A platform- and language-neutral interface that will allow programs and scripts to dynamically access and update the content, structure and style of documents.
        p>
    blockquote>
    <p>
        It is an <abbr title="Application Programming Interface">APIabbr>that can be used to navigate <abbr title="HyperText Markup Language">HTMLabbr> and <abbr title="eXtensible Markup Language">XMLabbr> documents.
    p>
    <ul>
        <li><a href="" accesskey="1">Homea>li>
        <li><a href="" accesskey="4">Searcha>li>
        <li><a href="" accesskey="9">Contacta>li>
    ul>
    <script src="scripts/displayAbbreviations.js">script>
    <script src="scripts/addLoadEvent.js">script>
body>
html>

1.显示“缩略语列表”

希望得到如下定义列表

<dl>
    <dt>W3Cdt>
    <dd>World Wide Web Consortiumdd>
    <dt>DOMdt>
    <dd>Document Object Modeldd>
    <dt>APIdt>
    <dd>Application Programming Interfacedd>
    <dt>HTMLdt>
    <dd>HyperText Markup Languagedd>
    <dt>XMLdt>
    <dd>Extensible Markup Languagedd>
dl>

使用DOM创建

//用一个定义列表元素显示标签包含文本和title属性
function displayAbbreviations(){
    if(!document.getElementsByTagName || !document.createTextNode || !document.createElement) return false;
    //取得所有缩略词
    var abbreviations = document.getElementsByTagName("abbr");
    if(abbreviations.length < 1) return false;
    var defs = new Array();
    //遍历所有缩略词
    for(var i=0; i<abbreviations.length; i++){
        //获取缩略词的title
        var definition = abbreviations[i].getAttribute("title");
        //获取缩略词的文本
        var key = abbreviations[i].lastChild.nodeValue;
        defs[key] = definition;
    }
    //创建列表
    var dlist = document.createElement("dl");
    for(key in defs){
        var definition = defs[key];
        //创建标题
        var dtitle = document.createElement("dt");
        var dtitle_text = document.createTextNode(key);
        dtitle.appendChild(dtitle_text);
        //创建描述
        var ddesc = document.createElement("dd");
        var ddesc_text = document.createTextNode(definition);
        ddesc.appendChild(ddesc_text);
        dlist.appendChild(dtitle);
        dlist.appendChild(ddesc);
    }
    //创建标题
    var header = document.createElement("h2");
    var header_text = document.createTextNode("Abbreviations");
    header.appendChild(header_text);
    //把标题、列表添加到页面主体
    document.body.appendChild(header);
    document.body.appendChild(dlist);
}
addLoadEvent(displayAbbreviations);

2.显示”文献来源链接表“

显示blockquote元素中cite属性

function dispalyCitations(){
    var quotes = document.getElementsByTagName("blockquote");
    for(var i=0; i<quotes.length; i++){
        if(!quotes[i].getAttribute("cite")) continue;
        var url = quotes[i].getAttribute("cite");
        //若使用lastChild属性不一定返回p元素节点,有可能将换行符解释为一个文本节点。
        //找出所有元素节点
        var quoteChildren = quotes[i].getElementsByTagName("*");
        if(quoteChildren.length < 1) continue;
        var elem = quoteChildren[quoteChildren.length - 1];
        //创建链接
        var link = document.createElement("a");
        //链接文本
        var link_text = document.createTextNode("source");
        link.appendChild(link_text);
        //给链接增加属性
        link.setAttribute("href",url);
    	//插入链接
        var superscript = document.createElement("sup");
        superscript.appendChild(link);
        elem.appendChild(superscript);
    } 
}
addLoadEvent(dispalyCitations);

3.显示”快捷键清单“

function displayAccesskeys(){
    var links = document.getElementsByTagName("a");
    var akeys = new Array();
    for(var i=0; i<links.length; i++){
        var current_link = links[i];
        if(!current_link.getAttribute("accesskey")) continue;
        var key = current_link.getAttribute("accesskey");
        var text = current_link.lastChild.nodeValue;
        akeys[key] = text;
    }
    var list = document.createElement("ul");
    for(key in akeys){
        var text = akeys[key];
        var str = key + ":" + text;
        var item = document.createElement("li");
        var item_text = document.createTextNode(str);
        item.appendChild(item_text);
        list.appendChild(item);
    }
    var header = document.createElement("h3");
    var header_text = document.createTextNode("Accesskeys");
    header.appendChild(header_text);
    document.body.appendChild(header);
    document.body.appendChild(list);
}
addLoadEvent(displayAccesskeys);

4.addLoadEvent

function addLoadEvent(func){
    var oldonload=window.onload;
    if(typeof window.onload!='function'){
        window.onload=func;
    }else{
        window.onload=function(){
            oldonload();
            func();
        }
    }
}

你可能感兴趣的:(JavaScript,javascript,html5,html)