JavaScript DOM编程艺术学习笔记(1)

通过一个图片库实例加深对DOM的掌握。
当点击一个链接后不跳转窗口显示并能看见图片清单,相对应的,
图片的描述也会改变。
HTML部分

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>Image Gallery</title>
  <script type="text/javascript" src="scripts/showPic.js"></script>
  <link rel="stylesheet" href="styles/layout.css" type="text/css" media="screen" />
</head>
<body>
  <h1>Snapshots</h1>
  <ul>
    <li>
      <a href="images/fireworks.jpg" title="A fireworks display" onclick="showPic(this); return false;">Fireworks</a>
    </li><!--当点击链接时调用showPic函数,但此时链接本身也会触发,showPic函数执行后返回一个false则可以阻止链接触发
    <li>
      <a href="images/coffee.jpg" title="A cup of black coffee" onclick="showPic(this); return false;">Coffee</a>
    </li>
    <li>
      <a href="images/rose.jpg" title="A red, red rose" onclick="showPic(this); return false;">Rose</a>
    </li>
    <li>
      <a href="images/bigben.jpg" title="The famous clock" onclick="showPic(this); return false;">Big Ben</a>
    </li>
  </ul>
  <img id="placeholder" src="images/placeholder.gif" alt="my image gallery" />
  <!--图片占位符,图片将会显示在这里-->
  <p id="description">Choose an image.</p>
  <!--文本站位符-->
</body>
</html>

JS部分

functions showPic(whichpic){
//传入点击的那个链接节点
var source=whichpic.getAttribute("href");
//获取这个节点的href属性,保存在source中
var placeholder=documnet.getElementById("placeholder")
//获取图片占位符
placeholder.setAttribute("src" source);
//修改它的src属性的对应值,则选中的图片就会显示在站位符所在位置
var text=whichpic.getAttribute("title');
//获取选中链接的title值
var descriptipn=documnet.getElementById("description");
获取文本站位符
description.firstChild.nodeValue=text;
修改文本的第一个子节点也就是文本节点的值。
}

现在这个功能基本上实现了,但其实有很多地方需要改进。部分JavaScript代码写到了html中,这一点上没有做到样式分离。从性能上考虑,减少不必要的DOM操作以及代码量都可以使网页性能更佳。(代码可以保有两份,一份便于修改,另一份用代码压缩工具压缩后投入使用)
改进后的html已经没有JavaScript部分了

<ul id="imagegallery">
    <li>
      <a href="images/fireworks.jpg" title="A fireworks display">
        <img src="images/thumbnail_fireworks.jpg" alt="Fireworks" />
      </a>
    </li>
    <li>
      <a href="images/coffee.jpg" title="A cup of black coffee" >
        <img src="images/thumbnail_coffee.jpg" alt="Coffee" />
      </a>
    </li>
    <li>
      <a href="images/rose.jpg" title="A red, red rose">
        <img src="images/thumbnail_rose.jpg" alt="Rose" />
      </a>
    </li>
    <li>
      <a href="images/bigben.jpg" title="The famous clock">
        <img src="images/thumbnail_bigben.jpg" alt="Big Ben" />
      </a>
    </li>
  </ul>

JS新增函数部分

function prepareGallery() {
//为onclick添加点击函数
  var gallery = document.getElementById("imagegallery");
  //获取ul
  var links = gallery.getElementsByTagName("a");
 //获取全部a标签
  for ( var i=0; i < links.length; i++) {
    links[i].onclick = function() {
       showPic(this);点击到某标签时就触发这个标签的showPic
       return false;返回一个false,阻止标签本身链接触发
    }
  }
}
window.onload=preparGallery;

这样就算是分离了html与js。
ps:键盘事件没必要写;如果有多个onload事件,可以使用addLoadEvent函数;没有写检查代码,我相信现在的浏览器是强大的:)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值