JavaScript DOM 图片库---动态创建图片

<ul id="imgShowList">
        <li><a href="image/1 (1).jpg" title="image/1 (1).jpg">图片1</a></li>
        <li><a href="image/1 (2).jpg" title="image/1 (2).jpg">图片2</a></li>
        <li><a href="image/1 (3).jpg" title="image/1 (3).jpg">图片3</a></li>
        <li><a href="image/1 (4).jpg" title="image/1 (4).jpg">图片4</a></li>
        <li><a href="image/1 (5).jpg" title="image/1 (5).jpg">图片5</a></li>
        <li><a href="image/1 (6).jpg" title="image/1 (6).jpg">图片6</a></li>
        <li><a href="image/1 (7).jpg" title="image/1 (7).jpg">图片7</a></li>
        <li><a href="image/1 (8).jpg" title="image/1 (8).jpg">图片8</a></li>
    </ul>

上面是HTML里面的代码结构。

实现的原理是:当点击相应的链接时,动态创建一个图片容器,和该图片的描述信息,并且将图片和描述信息分别显示在各自容器里面。在这里用一个<img><p>标签作为该容器,同时设置id为imgBox,desc,

下面开始是动态创建一个图片容器,和该图片的描述信息的函数:

 1 1 function prepareImgBox(){
 2  2     if(!document.createElement) return false;
 3  3     if (!document.createTextNode) return false;
 4  4     if (!document.getElementById(‘imgShowList‘)) return false;
 5  5     /*创建图片,并且设置属性*/
 6  6     var oImgBox = document.createElement("img");
 7  7     oImgBox.setAttribute("id", "imgBox");
 8  8     oImgBox.setAttribute("src", "image/1.jpg");
 9  9     oImgBox.setAttribute("alt", "图片一");
10 10   /*创建图片描述信息*/
11 11     var oDesc = document.createElement("p");
12 12     oDesc.setAttribute("id", "desc");
13 13     var oTxt1 = document.createTextNode("description");/*此处的图片描述可以自定义*/
14 14     oDesc.appendChild(oTxt1);
15 15     var imgShowList = document.getElementById(‘imgShowList‘);
16 16   /*插入图片以及图片描述信息*/
17 17     insertAfter(oImgBox, imgShowList);
18 18     insertAfter(oDesc, oImgBox);
19 19 }
 

其中,insertAfter为将目标元素插入指定元素后面的函数:

1 function insertAfter(newEle, targetEle){
2     var parentEle = targetEle.parentNode;
3     if(parentEle.lastChild == targetEle){
4         parentEle.appendChild(newEle);
5     }
6     else{
7         parentEle.insertBefore(newEle, targetEle.nextSibling);
8     }
9 }

鼠标点击不同的链接时,切换相应的目标图片,

切换图片的函数

 1 /*遍历图库里面的每一个链接,当用户点击某一个链接时,就会调用showPic函数*/
 2 function picGallery(){
 3     if(!document.getElementsByTagName){
 4         return false;
 5     }
 6     if(!document.getElementById){
 7         return false;
 8     }
 9     if (!document.getElementById(‘imgShowList‘)) {
10         return false;
11     }
12     var imgShowList = document.getElementById(‘imgShowList‘);
13     var Links = imgShowList.getElementsByTagName(‘a‘);
14     for (var i = 0; i<Links.length; i++) {
15         Links[i].onclick = function(){
16             return showPic(this) ? false : true;
17         }
18     }
19 }
 1 function showPic(obj){
 2     if(!document.getElementById("imgBox")) return false;
 3     var source = obj.getAttribute("href");
 4     var oImgPlace = document.getElementById("imgBox");
 5     if (oImgPlace.nodeName != "IMG") return false;
 6     oImgPlace.setAttribute("src", source);
 7
 8     if (document.getElementById("desc")){
 9         var oTxt = obj.getAttribute("title") ? obj.getAttribute("title") : "";
10         // var oTxt = obj.getAttribute("title");
11         var oDesc = document.getElementById(‘desc‘);
12         //p元素本身是是一个空值,文本节点是p元素里面的第一个子节点。
13         if (oDesc.firstChild.nodeType == 3) {
14             oDesc.firstChild.nodeValue = oTxt;
15         }
16     }
17     return true;
18 }

绑定多个函数

/*绑定多个函数*/
function addLoadEvent(func){
    //把现有window.onload事件处理函数的值存入变量oldonload
    var oldonload = window.onload;
    //若此事件处理函数没有绑定任何函数,则添加新函数。
    if (typeof window.onload != ‘function‘) {
        window.onload = func;
    }
    //否则,把新的函数追加到现有指令末尾。
    else{
        window.onload = function(){
            oldonload();
            func();
        }
    }
}
/*为了启用这些功能用addLoadEvent函数来调用prepareImgBox、picGallery函数*/
addLoadEvent(picGallery);
addLoadEvent(prepareImgBox);

总之,一句话,创建img、p两个元素,现在页面上加载一张图片,用户点击切换不同的图片时,同步读取该链接的href、title属性值,赋值给img的src,p的nodeValue.从而实现效果。

这是我的一些心得,不足之处,还请指教。

				
时间: 2024-08-04 16:38:40

JavaScript DOM 图片库---动态创建图片的相关文章

javascript如何实现动态创建表格和增加表格的行

javascript如何实现动态创建表格和增加表格的行:在实际应用中,表格的行数不一定都是符合实际要求的,可能需要动态的增加表格的行数,下面就是一段实现此功能的代码实例,并且还实现了隔行变色功能.有需要的朋友可以自行分析一下代码,非常的简单,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>动态操作表格</title> </

DOM中动态创建元素与jQuery中动态创建元素

DOM中动态创建元素与jQuery中动态创建元素 DOM中动态创建元素: 1. document.write("标签的代码")    缺点:页面中原有的元素会被覆盖掉 2. innerHTML 3. document.createElement("标签的名称") jQuery中动态创建元素: 1. $("标签的代码") 2. 对象.html("标签的代码") 原文地址:https://www.cnblogs.com/david

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

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

每日一题_JavaScript.利用纯JavaScript Dom Core实现一个图片轮播效果 ?

具体需求:1. 页面加载后每隔2秒自动从轮播图片2. 鼠标悬停或是点击页面中小图片时,大图片自动跟随切换,并且停止轮播3. 鼠标离开小图片时,图片重新开始轮播 实现思路: 具体代码: html <!DOCTYPE html> <html>     <head>         <meta charset="utf-8" />         <title>Js实现图片轮播</title>         <l

javascript和jquery动态创建html元素

1.javascript创建元素 创建select var select = document.createElement("select");        elect.options[0] = new Option("加载项1", "value1");       select.options[1] = new Option("加载项2", "value2");       select.size = 

JavaScript 动态创建标记与Ajax

JavaScript 动态创建标记与Ajax 一:简介 前面都是针对已经存在的标记进行操作.JavaScript同样可以动态创建标记并且与现有标记组合生成新的Document.同时简单的介绍了Ajax. 二:动态创建标记与组合 相关方法: /** * Some old-shcool method */ document.write("str"); var node = document.getElementById('id'); var htmlValue = node.innerHT

07JavaScript动态创建DOM

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- 常用方法: createElement(‘element’);创建一个节点 appendChild(node); 追加一个节点 removeChild(node);移除一个节点 replaceChild(new,old);替换一个节点 insertBefore(new,参照);把节点加到前面(插到某个节点前面) 属性: firstChild la

Javascript:DOM动态创建元素实例应用

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Dom:动态创建元素</title> </head> <body> <ul id="demo1"> </ul> <input type="text" id=&quo

《Javascript DOM编程艺术》--第七章动态创建标记

向浏览器里的文档动态添加标记的方法: 一. 传统方法:以下两种都是HTML专有的属性,不能用于其他标记语言文档. 1. document.write():最大的缺点是违背了“行为应该与表现分离”的原则. 2. innerHTML 属性:在需要把一大段HTML内容插入一份文档时,innerHTML属性可以又快又简单的完成这个任务.不过,innerHTML属性不会返回任何对刚插入的内容的引用. 在任何时候,DOM都可以来替代innerHTML. 二. 利用DOM方法:DOM是文档的表示. 1. cr