if(links[i].className=="popup"){
links[i].click=function(){
popUp(this.getAttribute("href"));//这儿的关键字this代表着在此时此刻与onclick方法相关联的那个元素
returnfalse;//意思是"按照这个链接没被点击的情况采取行动"
}
}
}
}
4、其他注意事项
若加载页面时出现window.onload=firstFunction;window.onload=secondFunction;此时最后的secondFunction函数才会被实际执行
若要把多个JavaScript函数绑定到onload事件处理函数上,有两种方法
1>window.onload=function(){
firstFunction();
secondFunction();
}
2>使用函数AddLoadEvent(),其完成的操作为:
A.把现有的window.onload事件处理函数的值存入变量oldonload
B.如果在这个处理函数上还没有绑定任何函数,就像平时那样把新函数添加给它
C.如果在这个处理函数上已经邦定理一些函数,就把新函数追加到现有指令的末尾
实现方法为:
AddLoadEvent(firstFunction);AddLoadEvent(secondFunction);
其中:
functionaddLoadEvent(func){
varoldonload=window.onload;
if(typeofwindow.onload!
='function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
}
}
}
五、动态创建HTML内容
要点
用来动态创建HTML内容的“老”技巧:
document.write()方法和innerHTML属性
深入剖析DOM方法:
createElement()、createTextNode()、appendChild()和insertBefore().
1、document.write()方法:
方便快捷的把字符串插入到文档里
2、innerHTML属性可以用来读、写某给定元素里的HTML内容,innerHTML属性是一项专利技术,不是一项业界标准。
3、createElement()方法:
创建一个新的元素。
用法为:
document.createElement(nodeName)
4、appendChild()方法:
把新建的节点插入某个文档的节点数的最简单的办法是,让它成为这个文档的某个现有节点的一个子节点。
appendChild()方法的用法为:
parent.appendChild(child)例如要实现元素P成为testDiv元素的一个子节点
varpara=document.createElement("P");//新创建一P元素
vartestDiv=document.getElementById("testDiv");//提取出来testDiv节点
testDiv.appendChild(para);//把元素P成为testDiv元素的子节点
5、createTextNode()方法:
创建一个文本节点
用法为:
document.createTextNode(text)如:
document.createTextNode("Helloworld");//创建一个内容为"Helloworld"的文本节点
用appendChild()方法把文本节点插入为某个现有元素的子节点
接4:
varpara=document.createElement("P");//新创建一P元素
vartestDiv=document.getElementById("testDiv");//提取出来testDiv节点
testDiv.appendChild(para);//把元素P成为testDiv元素的子节点
vartxt=document.createTextNode("Helloworld");//创建一个内容为"Helloworld"的文本节点
para.appendChild(txt);//用appendChild()方法把txt这个文本节点插入为现有元素P的子节点上去
也可以把上面的步骤交换下位置,变为:
varpara=document.createElement("P");//新创建一P元素
vartxt=document.createTextNode("Helloworld");//创建一个内容为"Helloworld"的文本节点
para.appendChild(txt);//用appendChild()方法把txt这个文本节点插入为现有元素P的子节点上去
vartestDiv=document.getElementById("testDiv");//提取出来testDiv节点
testDiv.appendChild(para);//把元素P成为testDiv元素的子节点
6、insertBefore()方法:
将把一个新元素插入到一个现有元素的前面
调用语法为:
parentElement.insertBefore(newElement,targetElement);
其中:
newElement是想插入的元素;targetElement是想把新元素newElement插入到哪个现有元素(targetElement)的前面;
parentElement是上面两元素newElement、targetElement共同的父元素(这儿的父元素一般是targetElement元素的parentNode属性)如:
vargallery=document.getElementById("imagegallery");
gallery.parentNode.insertBefore(placeholder,gallery);//把placeholder元素插入到图片清单的前面
gallery.parentNode.insertBefore(description,gallery);//把description元素插入到图片清单的前面
但DOM中没有insertAfter()方法。
自身定义insertAfter()方法。
如下:
functioninsertAfter(newElement,targetElement){
varparent=targetElement.parentNode;//把目标元素的parentNode属性值提取到变量parent里
if(parent.lastChild==targetElement){//检查目标元素是不是parent的最后一个子元素
parent.appendChild(newElement);
}else{
parent.insertBefore(newElement,targetElement.nextSibling);//targetElement.nextSibling为目标元素的下一个子元素即目标元素的下一个兄弟节点
}
}
7、程序代码
1>showPic.js代码如下
//showPic()方法
functionshowPic(whichpic){
if(!
document.getElementById("placeholder"))returntrue;
varsource=whichpic.getAttribute("href");
varplaceholder=document.getElementById("placeholder");
placeholder.setAttribute("src",source);
if(!
document.getElementById("description"))returnfalse;
if(whichpic.getAttribute("title")){
vartext=whichpic.getAttribute("title");
}else{
vartext="";
}
vardescription=document.getElementById("description");
if(description.firstChild.nodeType==3){
description.firstChild.nodeValue=text;
}
returnfalse;
}
//此函数负责处理有关的事件。
将遍历imagegallery清单里的每个链接,并给它加上一个onclick事件处理函数。
当用户点击这个链接中的某一个时
//就会调用showPic()函数
functionprepareGallery(){
if(!
document.getElementsByTagName)returnfalse;
if(!
document.getElementById)returnfalse;
if(!
document.getElementById("imagegallery"))returnfalse;
vargallery=document.getElementById("imagegallery");
varlinks=gallery.getElementsByTagName("a");
for(vari=0;ilinks[i].onclick=function(){
returnshowPic(this);
}
links[i].onkeypress=links[i].onclick;
}
}
//通用型函数,在很多场合都能派上用场
functionaddLoadEvent(func){
varoldonload=window.onload;
if(typeofwindow.onload!
='function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
}
}
}
//通用型函数,在很多场合都能派上用场
functioninsertAfter(newElement,targetElement){
varp