我的前端入门第一本书是《JavaScript Dom 编程艺术》,网上查找资料发现前端的入门推荐书籍最受好评的就是这本和《JavaScript 高级程序设计》了。之所以先选这本是因为这本书从实例开始带领读者一步步学习,写作风格也如其名字一样具有艺术感,阅读起来很舒服。本书第一二三稍微有计算机基础的人阅读起来都不困难,也没有什么好记录的,从第四章开始,本书开始介绍案例图片库~每一节都是干货满满滴~

第四章——案例研究:JavaScript图片库:

4.1 标记

无序清单元素<ul>,有序清单元素<ol>。无序清单元素列出图片库的链接,点击某个链接即可跳转到相应的图片,但图片重新返回到链接清单还需要借助流浪器的Back按钮。

  <ul>
<li>
<a href="image/1.jpg" title="1" >1 </a>
</li>
<li>
<a href="image/2.jpg" title="2" >2 </a>
</li>
<li>
<a href="image/3.jpg" title="3" >3 </a>
</li>
</ul>

希望改进:

1. 当点击某个链接时,留在这个页面而不是转到另一个窗口。

2. 当点击这个链接时,希望同时看到那张图片以及原有的图片清单。

做法:

1. 增加“占位符”图片在主页上为浏览器预留一个浏览区域;

 <img id="placeholder" src="data:image/1.jpg" alt="my image gallery"/> //将这行代码插到图片清单的末尾

2. 点击这个链接时,拦截这个浏览器的默认行为

3. 点击某个链接时,将“占位符”图片替换为相对应的图片

//做法2.3 用下一节介绍JavaScript函数实现

4.2 JavaScript

要实现上面的做法2.3,可以通过 showPic 函数修改占位符图片的src属性。

function showPic(whichpic){//whichPic 代表一个元素节点,指向某个图片的<a>元素。
var source=whichpic.getAttribute("href"); //获取图片的文件路径
var placehold=document.getElementById("placeholder"); //获取“占位符”图片
placehold.setAttribute("src",source);// 刷新占位符的src属性
 }

setAttribute 是第一级DOM的组成部分,可以设置任意元素节点的任意属性。也可以用placehold.src=source来代替。

placehold.src=source;// 刷新占位符的src属性 

4.3 应用这个JavaScript 函数

将上面的JavaScript程序保存在example.js文件中。

在图片库的HTML文件的</body>中插入:

<script type="text/javascri pt" src="example.js"></script>

然后在图片列表的链接添加行为,也就是事件处理函数(在特定事件发生时调用特定的JavaScript代码,例:onmouseover,onmouseout,onclick,onkeypress)。

<a href="image/1.jpg" onclick="showPic(this);return false" title="1" >1 </a> // return false表示取消链接被点击时的默认行为

4.4 对这个函数做扩展

childNodes属性:获得任意元素的所有子元素。

childNodes.length:获取子元素的个数。

nodeType:获取节点的属性。共有12中可取值,仅三种具有实用价值。元素节点的nodeType值,1;属性节点,2;文本节点,3。

nodeValue:获取节点的值。

 // 在“占位符”图片下面添加图片描述
<img id="placeholder" src="data:image/1.jpg" alt="my image gallery"/>
<p id="describe"> choose an image</p>

将“占位符”图片下面添加图片描述修改为点击图片的描述:

//在JS中修改“choose an image”的方式是:
var des=document.getElementById("describe");
des.childNodes[0].nodeValue=whichpic.getAttribute("title");

firstChild 和 lastChild:元素的第一个子元素和最后一个元素。

des.childNodes[0].nodeValue=whichpic.getAttribute("title");
//可以修改为:
des.firstChild.nodeValue=whichpic.getAttribute("title");

到目前为止完整的JS代码清单:

function showPic(whichpic){
var source=whichpic.getAttribute("href");
var placehold=document.getElementById("placeholder");
placehold.setAttribute("src",source);
var des=document.getElementById("describe");
des.firstChild.nodeValue=whichpic.getAttribute("title");
}

4.5 小结

DOM的几个新属性:

childNodes:获得任意元素的所有子元素。

nodeType:获取节点的属性。共有12中可取值,仅三种具有实用价值。元素节点的nodeType值,1;属性节点,2;文本节点,3。

nodeValue:获取节点的值。

firstChild 和 lastChild:元素的第一个子元素和最后一个元素。

重点:

利用DOM提供的方法编写图片库脚本和用事件处理函数把JavaScript代码与网页集成到一起。

《JavaScript Dom 编程艺术》读书笔记-第4章的更多相关文章

  1. JavaScript DOM编程艺术读书笔记(三)

    第七章 动态创建标记 在web浏览器中往文档添加标记,先回顾下过去使用的技术: <body> <script type="text/javascript"> ...

  2. JavaScript DOM编程艺术读书笔记(二)

    第五章 最佳实践 平稳退化(graceful degradation):如果正确使用了JavaScript脚本,可以让访问者在他们的浏览器不支持JavaScript的情况下仍能顺利地浏览你网站.虽然某 ...

  3. JavaScript DOM编程艺术读书笔记(一)

    第一章,第二章 DOM:是一套对文档的内容进行抽象和概念化的方法. W3C中的定义:一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态的访问和修改文档的内容,结构和样式. DHTML( ...

  4. JavaScript DOM编程艺术 - 读书笔记1-3章

    1.JavaScript语法 准备工作 一个普通的文本编辑器,一个Web浏览器. JavaScript代码必须通过Html文档才能执行,第一种方式是将JavaScript代码放到文档<head& ...

  5. JavaScript DOM编程艺术 读书笔记

    2. JavaScript语法 2.1 注释      HTML允许使用"<!--"注释跨越多个行,但JavaScript要求这种注释的每行都必须在开头加上"< ...

  6. JavaScript DOM编程艺术读书笔记(四)

    第十章 实现动画效果 var repeat = "moveElement('"+elementID+"',"+final_x+","+fin ...

  7. JavaScript DOM编程艺术-学习笔记(第二章)

    1.好习惯从末尾加分号:开始 2.js区分大小写 3.程序界万能的命名法则:①不以,数字开头的数字.字母.下划线.美元符号 ②提倡以下划线命名法来命名变量,以驼峰命名法来命名函数.但是到了公司往往会身 ...

  8. 《javascript dom编程艺术》笔记(一)——优雅降级、向后兼容、多个函数绑定onload函数

    刚刚开始自学前端,如果不对请指正:欢迎各位技术大牛指点. 开始学习<javascript dom编程艺术>,整理一下学习到的知识.今天刚刚看到第六章,记下get到的几个知识点. 优雅降级 ...

  9. JavaScript DOM编程艺术学习笔记(一)

    嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推 ...

  10. JavaScript DOM编程艺术-学习笔记

    发现基础不是很好,补习一下.37买了2本书(dom编程和高级程序设计). 以前读书总是自己勾勾画画,有点没意思.现在写下来,说不定会成为传世经典.哈哈...........随便扯扯淡. 第一天(201 ...

随机推荐

  1. eclipse添加spring boot 插件

    在使用eclipse开发时,一般需要添加spring boot的管理插件,这样更方便我们开发,在写application.yml或properties配置的时候,也有相关的提示,而且还可以从配置文件中 ...

  2. 1001 害死人不偿命的(3n+1)猜想 (15 分)

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 ...

  3. MySQL条件检索_WHERE

    MySQL使用WHERE命令来限定数据查询条件. 语法:SELECT 属性1,属性2 FROM 表名 WHERE 条件1 OR 条件2 AND 条件3 说明:WHERE同样适用于UPDATE.DELE ...

  4. Linux 查看系统负载

    查看系统负 # 查看系统负载 命令:uptime :: up :, users, load average: 0.00, 0.00, 0.00 注:load average: 0.00, 0.00, ...

  5. Linux curl 网络访问

    Linux curl 网络访问 参数详解 -a/--append 上传文件时,附加到目标文件 -A/--user-agent <string> 设置用户代理发送给服务器 -anyauth ...

  6. jsp传Array数组到后台

    jsp页面传递对象数组到后台的需求 JSP: //保存 $("#submitBtn").click(function(){ var flag = true; var eachfla ...

  7. 算法(第四版)C# 习题题解——1.2

    写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 ...

  8. 剑指offer(1)二维数组的查找

    限制今天起开始也刷剑指offer啦,一步一步来. 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...

  9. Spring错误——Spring 注解——factory-bean reference points back to the same bean definition

    背景:学习Spring,在使用注解@Bean的name属性配置<bean>实例时,不能注册实例成功 报错 WARNING: Exception encountered during con ...

  10. postgresql:terminate hung query

    --Find the PID by running this sql: SELECT pid , query, * from pg_stat_activity WHERE state != 'idle ...