总结一下这几天学的《JavaScript DOM编程艺术 第2版》(1)

整本书都是关于如何利用好DOM来进行相应的编程,总的来说,DOM的意识确实加强了,不过最深的还是书中利用DOM来编写的图片滑动的两个例子,一个是第六章,另一个是第十章。具体代码见【下载地址

第六章要点分析:

HTML页面

  首先在HTML页面一个<ul>多个li标签</ul>其中<li></li>的标签具体样式如下,给<ul>设置id是为了在js内获得ul的相应属性

<pre name="code" class="html">  <ul id="imagegallery">
<li></li>
.....  
<li>
      <a href="images/bigben.jpg" title="The famous clock">
        <img src="images/thumbnail_bigben.jpg" alt="Big Ben" />
      </a>
    </li>
</ul>

然后在<ul></ul>结束后加上一个占位标签,就是一开始的时候要有张图片占有具体大小的位置,然后点击<li>标签内的图片时,图片变化实在下面方框中进行变化的

<img id="placeholder" src="images/placeholder.gif" alt="my image gallery" />  
<p id="description">Choose an image.</p>
<p>标签只是在图片滑动时相应的显示<li>中图片的<title>中的内容


JS代码

通过js DOM来获得html页面中相应标签的属性,然后修改该标签的属性(我觉得整本书就是在讲这个,哦还有就是通过DOM添加一些标签,再为该标签添加属性)

以下是JS的完整代码

function showPic(whichpic) {
  if (!document.getElementById("placeholder")) return true;
  var source = whichpic.getAttribute("href");
  var placeholder = document.getElementById("placeholder");
  placeholder.setAttribute("src",source);
  if (!document.getElementById("description")) return false;
  if (whichpic.getAttribute("title")) {
    var text = whichpic.getAttribute("title");
  } else {
    var text = "";
  }
  var description = document.getElementById("description");
  if (description.firstChild.nodeType == 3) {
    description.firstChild.nodeValue = text;
  }
  return false;
}

function prepareGallery() {
  if (!document.getElementsByTagName) return false;
  if (!document.getElementById) return false;
  if (!document.getElementById("imagegallery")) return false;
  var gallery = document.getElementById("imagegallery");
  var links = gallery.getElementsByTagName("a");
  for ( var i=0; i < links.length; i++) {
    links[i].onclick = function() {
      return showPic(this);
	}
    links[i].onkeypress = links[i].onclick;
  }
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

addLoadEvent(prepareGallery);

一个函数一个函数来讲吧

首先是showPic(whichpic)

该函数是通过var source = whichpic.getAttribute("href");来获得当前对象的href属性

getAttribute("**")是获得当前对象的**属性。

再通过新建变量placeholder来获得id为placeholder的src属性,再将placeholder中的src更改为所选中图片的href;

placeholder.setAttribute("src",source)

setAttribute("**",#)是将#的属性替换掉**的属性。


其中有个description.firstChild.nodeType == 3

这里做个说明

nodeType

nodeType 属性可返回节点的类型。

最重要的节点类型是:

元素类型节点类型
元素element1
属性attr2
文本text3
注释comments8
文档document9

注意结尾的return false;这个函数不返回任何值,故要加上。


接着是第二个prepareGallery()函数,开始的三个if语句是检验当前浏览器是否支持该DOM,不支持则返回false,

通过新建links变量来获得<li>标签中的<a>的属性,当点击<a>中图像时调用showpic(whichpic)函数,更换占位处的图片链接,从而达到占位处图片更换的
作用。

其中links[i].onkeypress = links[i].onclick;的作用是让用户在使用键盘敲击时达到和鼠标点击一样的效果。


然后是第三个函数是页面加载时启动函数,不直接用window.onload是该函数在调用的时候更方便,直接addLoadEvent(prepareGallery);即可。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值