《JavaScript DOM编程艺术》笔记:充实文档内容(六)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8"/>
	<title>Test</title>
</head>
<body>
	<h1>What id the Document Object Model?</h1>
	<p>
		The <abbr title="World Wide Web Consortium">W3C</abbr> defines
		the <abbr title="Document Object Model">DOM</abbr> as:
	</p>
	<blockquote cite="http://www.w3.org/DOM/">
		<p>
		A platform- ans language-neutal 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 Progranming Interface">APT</abbr>
		that can be used to navigate <abbr title="HyperText Markup Languae">HTML</abbr> and <abbr title="eXtensible Markup Languae">XML</abbr>
		documents.
	</P>
	<script src="example.js"></script>
</body>
</html>

注:abbr标签与acronym这两个标签之间的区别一直纠缠不清。abbr标签的含义是缩略语,它是对单词或短语的简写形式的统称。<aronym>标签的含义是被当成一个单词来读的“首字母缩写词”。如果你把DOM念成一个单词dom,它就是一个首字母缩写词;如果你把它念成三个字母D-O-M,它就是一个缩略词。

 


body
{
	font-family: "Helvetice","Arial",sans-serif;
	font-size: 10pt;
}
abbr{
	text-decoration: none;
	border: 0;
	font-size: normal;
}

javascript

缩略语的title属性在浏览器里是隐藏的。有些浏览器会在你把鼠标指针悬停在缩略语上时,将它的title属性显示为一个弹出式的提示消息。就像浏览器所使用的默认样式一样,浏览器对缩略语的默认呈现行为也是各有各的做法。

function displayAbbreviations()
{

	//检查兼容性
	if(!document.getElementsByTagName) return false;
	if(!document.createElement) return false;
	if(!document.createTextNode) return false;



	//遍历这份文档中的所有abbr元素
	//找出abbr元素节点集合
	var abbreviations = document.getElementsByTagName("abbr");
	if(abbreviations.length<1 ) return false;
	//用来保存每一个节点的信息
	var defs = new Array();
	for (var i = 0 ;i < abbreviations.length ; i++)
	{
		var current_abbr = abbreviations[i];
		//保存每个abbr的title属性
		var definition = current_abbr.getAttribute("title");
		//保存每个abbr元素包含的文本
		var key = current_abbr.lastChild.nodeValue;

		defs[key] = definition;
	}

	//创建标记
	//定义列表是表现缩略语句及其解释的理想结构。定义列表(<dl>)由一系列"定义标题"(<dt>)和相应的"定义描述"(<dd>)构成:
	//<dl>
	//  <dt>Title 1</dt>
	//  <dd>Description1</dd>
	//  <dt>Title 2</dt>
	//  <dd>Description2</dd>
	//<dl>
	//用createElement方法创建这个定义列表,并把这个创新的元素赋值给变量dlist:
	var dlist = document.createElement("dl");
	//遍历defs数组。
	//每次循环都需要创建一个dt元素和一个dd元素,我们还需要创建相应的文本节点并把它们分别添加到新创建的dt和dd元素。

	for(key in defs){
		var definition = defs[key];
		//创建dt元素
		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);

		//把dt和dd追加到dl上
		dlist.appendChild(dtitle);
		dlist.appendChild(ddesc);
	}

	//插入定义列表
	//创建一个h2元素节点
	var header = document.createElement("h2");
	//创建一个内容为Abbreviations的文本节点:
	var header_text = document.createTextNode("Abbreviations");

	//把文本加入到h2元素节点
	header.appendChild(header_text);


	//把新创建的元素追加到body标签上即可
	//引用body的方法有两种
	//DOM Core 即引用某个给定文档的第一个body标签:
	//document.getElementsByTagName("body")[0];
	//第二种 引用某给定文档的属性:
	//document.body
	//
	//插入缩略语的标题
	document.body.appendChild(header);
	//插入缩略语本身
	document.body.appendChild(dlist);
}
//加载页面时被调用
 function addLoadEvent(func){
   var oldonload = window.onload;
   if(typeof window.onload != 'function'){
      window.onload = func;
   }
   else
   {
      window.onload = function(){
         oldonload();
         func();
      }
   }
}
addLoadEvent(displayAbbreviations);

  • 显示文献来源链接表

function displayCitations() {

	//找出文档里所有的blockquote元素
	var quotes = document.getElementsByTagName("blockquote");
	//遍历这个集合
	for(var i = 0 ;i<quotes.length ; i++)
	{
		//用getAttribute方法测试节点集合quotes中的当前元素,如果getAttribute结果为真,就说明这个节点有cite属性。
		if(!quotes[i].getAttribute("cite")){
			continue;
		}
		//得到当前的blockquote元素的cite属性值并把它存入变量url
		var url = quotes[i].getAttribute("cite");
		//一个blockquote元素必定包含块级元素,如果文本段落,以容纳被引用的大段文本。
		//找到当前blockquote元素的lastChild属性
		//quotes[i].lastChild
		//找出当前blockquote元素里的所有元素节点
		var quoteElements = quotes[i].getElementsByTagName("*");
		if(quoteElements.length < 1) continue;
		var elem = quoteElements[quoteElements.length-1];

		//创建一个链接元素
		var link = document.createElement("a");
		var link_text = document.createTextNode("source");
		link.appendChild(link_text);
		//把href属性添加给新链接。用setAttribute方法把它设置为变量url的值
		link.setAttribute("href",url);

		//创建一个sup元素节点并把它存入变量superscript
		var superscript = document.createElement("sup");
		//把新链接放入这个sup元素
		superscript.appendChild(link);

		//把这个标记插入文档,你要把变量superscript追加为变量elem的最后一个子节点。因为变量elem对应着blockquote元素目前所包含的最后一个元素节点
		//这个上标形式的新链接将出现在文献节选后面。
		elem.appendChild(superscript);
	}
}
addLoadEvent(displayCitations);

  • 显示快捷清单

	<ul id="navigation">
		<li><a href="index.html" accesskey="1">Home</a></li>
		<li><a href="serch.html" accesskey="4">Search</a></li>
		<li><a href="contact.html" accesskey="9">Contact</a></li>
	</ul>

把段代码添加到<body>标签后面。

//accessKey属性可以把一个元素与键盘上的某个特定按键关联在一起。
function displayAccesskeys() {
	if (!document.getElementsByTagName || !document.createElement||!document.createTextNode) return false;
	//取得文档中的所有链接
	var links = document.getElementsByTagName("a");
	//创建一个数组,保存访问键
	var akeys = new Array();
	//遍历链接
	for (var i = 0; i< links.length ; i++) {
		var current_link = links[i];
		//如果没有accesskey属性,继续循环
		if(!current_link.getAttribute("accessKey")) continue;
		//取得accesskey属性
		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);
	// body...
}
addLoadEvent(displayAccesskeys);

猜你喜欢

转载自blog.csdn.net/baidu_29474379/article/details/84105144