JavaScript DOM编程艺术第六章实例

第六章实例和改进笔记

js1.js

//如果在HTML文档完成前加载执行脚本,此时DOM不完整,所以应该让函数在网页加载完毕后立即执行
//网页加载完会触发onload事件,让这个事件与window对象相关联
//如果使用window.onload = func 则只有最后一个绑定的函数会被实际执行
addLoadEvent(prepareGallery);
addLoadEvent(showPic);
//共享onload事件
function addLoadEvent(func) {
    var oldonload = window.onload;//现有的window.onload事件处理函数存入oldload
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function () {
            oldonload();
            func();//新函数追加到现有指令末尾
        }
    }
}

function prepareGallery() {
    if(!document.getElementById) return false;//检查点
    if(!document.getElementsByTagName) return false;
    if(!document.getElementById("imagegallery")) return false;
    var gallery=document.getElementById("imagegallery");
    var link=gallery.getElementsByTagName("a");
    for(var i=0;i<link.length;i++){
        link[i].onclick=function () {
            return showPic(this)?false:true;//如果更换成功则返回false,防止用户被带到目标链接窗口;不成功则返回true,转跳链接窗口
        }
    }
}

function showPic(w) {
    if(!document.getElementById("placeholder")) return false;
    var source=w.getAttribute("href");
    var placeholder=document.getElementById("placeholder");
    if(placeholder.nodeName!="IMG") return false;//nodeName属性返回的是大写字母的值,元素节点返回标签名,属性节点返回属性名
    placeholder.setAttribute("src",source);
    if(document.getElementById("description")) {
        var text = w.getAttribute("title")?w.getAttribute("title") : "" ;
        var description=document.getElementById("description");
        if(description.firstChild.nodeType==3) {
            description.firstChild.nodeValue = text;//nodeValue文本节点返回文本,属性节点返回属性值
        }
    }
    return true;
}

html1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Image Gallery</title>
    <link rel="stylesheet" href="styles/layout.css" media="screen" />
</head>
<body>
<h1>choose one to change</h1>
<ul id="imagegallery">
    <li>
        <a href="images/1.jpeg" title="pic1"><img src="images/1.jpeg" class="image" /></a>
    </li>
    <li>
        <a href="images/2.jpeg" title="pic2"><img src="images/2.jpeg" class="image"/></a>
    </li>
    <li>
        <a href="images/4.jpg" title="pic4"><img src="images/4.jpg" class="image"/></a>
    </li>
    <li>
        <a href="images/5.jpg" title="pic5"><img src="images/5.jpg" class="image"/></a>
    </li>
</ul>
<img id="placeholder" src="images/3.jpg" />
<p id="description">title change</p>
<script type="text/javascript" src="js1.js"></script>
</body>
</html>

layout.css (没怎么写…)

#imagegallery{
    list-style: none;
}
#imagegallery li{
    display: inline;
}
.image{
    height: 100px;
    width: 200px;
}
#placeholder{
    height: 450px;
    width: 720px;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值