【web必知必会】—— 使用DOM完成属性填充

  本文介绍了使用DOM的简单方法实现动态加载图片的功能。

  前文介绍了:

  1 DOM四个常用的方法

  首先看一下效果,初始时是一个相册,可以点击导航,切换图片,并切换下方显示内容:

  点击house,可以动态的切换另一个图片

  所使用的代码,如下:

<!doctype html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>我的相册</title><style type="text/css">body {font-family: "Helvetica","Arial",sans-serif;color: #333;background-color: #ccc;margin: 1em 10%;}h1 {color:#333;background-color: transparent;}a {color:#c60;background-color: transparent;font-weight: bold;text-decoration:none;}li {float: left;padding: 1em;list-style: none;}img {clear:both;display: block;}</style></head><body><h1>我的相册</h1><ul><li><a href="images/pig.png" title="I'm pig!" οnclick="showPic(this);return false;">Pig</a></li><li><a href="images/rabit.png" title="I'm rabit!" οnclick="showPic(this);return false;">Rabit</a></li><li><a href="images/house.png" title="I'm house!" οnclick="showPic(this);return false;">house</a></li><li><a href="images/monkey.png" title="I'm monkey!" οnclick="showPic(this);return false;">monkey</a></li></ul><img id="placeHolder" alt="image" src="images/pig.png"/><p id="description">Choose an image.</p><script type="text/javascript">function showPic(whichPic){var source = whichPic.getAttribute("href");var placeHolder = document.getElementById("placeHolder");placeHolder.setAttribute("src",source);var text = whichPic.getAttribute("title");var description = document.getElementById("description");description.firstChild.nodeValue = text;}</script></body>
</html>

  代码解析

  在这篇示例代码中,主要需要了解的内容是:

  1 如何获取元素对象的属性

  2 如何动态设置元素对象的属性值

  3 如何拦截click事件

  4 如何动态设置元素文本

  5 float浮动

  1&2 获取设置元素对象的属性

  前篇已经介绍过了,获取设置元素的属性,可以使用getAttribute()和setAttribute()两个方法:

  在showPic()函数中,通过传过来的对象,可以直接调用getAttribute获取属性href的链接内容,然后通过getElementById方法获取图片对象,并设置其src的属性值。

var source = whichPic.getAttribute("href");
var placeHolder = document.getElementById("placeHolder");
placeHolder.setAttribute("src",source);

  3 onclick事件

  上面已经创建好了showPic()方法,只要传入对象即可。因此在a标签中,使用onclick事件,即可。

  但是onClick事件,是要接收一个bool值,如果是true,则会默认的跳到另一个网页链接;相反,如果是false,则不会产生任何结果。

  因此在onClick事件中需要如下书写:

<a href="images/pig.png" title="I'm pig!" οnclick="showPic(this);return false;">Pig</a>

  4 动态设置文本

  如果想要使用元素对象的文本,使用nodeValue就可以了。但是如果直接使用,会得到null值。

  因为,元素对象本身是没有文本的,但是它有childNodes对象、firstChild和lastChild对象。

  展开他的childNodes属性可以发现,该属性中包含一个对象:

  该对象中有nodeValue属性,对应的才是标签对应的内容。

  由于该标签中只有一个对象,因此使用 firstChild 和 lastChild 或者 childNodes[0] 都可以获取到该对象。

  其中的原理,类似前面文章讲述的元素节点,属性节点和文本节点的关系,文本节点是该元素标签节点的一个子对象,因此无法用nodeValue直接获取标签的文本,而是需要获取它的孩子对象,才能得到nodeValue。

  5 float浮动

  如果不设置img的CSS样式,会发现本来我们想要使ul中的li标签水平显示,结果在宽度足够的情况下,img也跟着水平显示了。

  这是为什么呢?

  查阅资料发现,原来传统的文档对象是按照文档布局来显示的:由上到下,由左到右,遇到块级元素则换行,遇到内联元素则补齐。

  如果使用float浮动,会打破该布局,如果给对象设置上了float属性,则会导致文档布局时,出现一定的空隙,那么这个空隙就会让下一个元素来填充了。

  因此上面的图片布局中,img元素会随着ul中li的float一起浮动显示。

  而clear:both则是为了预防float引起的布局错乱,可以使用clear清除布局设置。这样img就不会与前面的li产生同样的float效果了。

  但是虽然清除了浮动,但由于img元素属于内联元素,因此只要把它转换成块级元素,就可以产生换行的效果了。

            img {clear:both;display: block;}

 

  参考

  【1】float详解:http://www.cnblogs.com/polk6/archive/2013/07/25/3142187.html

  【2】《JavaScript DOM 编程艺术》

  【3】巧用clear:both:http://www.cnblogs.com/jenney-qiu/archive/2012/03/28/2421819.html

  【4】display:http://www.w3school.com.cn/cssref/pr_class_display.asp

  【5】块级元素与内联元素:http://www.cnblogs.com/NetSos/archive/2010/08/31/1814223.html

转载于:https://www.cnblogs.com/xing901022/p/4333757.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

地址总线 数据总线

地址总线&#xff1a; CPU地址总线的宽度决定了它能寻址多少个内存单元地址,一个CPU有N根地址总线那么它的寻址能力为2^N次方。8086CPU地址总线宽度为20可寻址2^20次方个内存单元地址大小为1M。80386地址总线宽度为32可寻址内存为4GB 数据总线&#xff1a; CPU与存储器之间的数…

Spring事务配置方式(一) 拦截器方式配置

一、使用<tx:advice>和<aop:config>配置事务 <!-- 配置事务管理器 --><bean id"transactionManager" class"org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name"dataSource" ref&qu…

8086寄存器组

寄存器(14个)|AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES| >通用寄存器 数据寄存器(存放一般数据)AX (AH,AL) | BX (BH,BL) | CX (CH,CL) | DX (DH,DL) 指针寄存器 堆栈指针 基址指针SP BP (SS:SP) 变址寄存器 源地址 目的地址SI …

学习动态性能表(10)--v$session_longops

学习动态性能表 第十篇--V$SESSION_LONGOPS 2007.6.7 本视图显示运行超过6秒的操作的状态。包括备份&#xff0c;恢复&#xff0c;统计信息收集&#xff0c;查询等等。 要监控查询执行进展状况&#xff0c;你必须使用cost-based优化方式&#xff0c;并且&#xff1a; 设置TIME…

存储器

存储器以字节为单位存储信息,一个存储单元存储一个字节。一个字需要用两个连续的存储单元。 每一个存储单元有唯一的地址&#xff0c;称为存储单元地址。

JDBC常用API小结

建立数据库链接的三种方式&#xff1a; package com.victor_01;import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties;import org.junit.Test;public class Test1 {private String…

学习动态性能表(12)--v$db_object_cache

学习动态性能表 第12篇--V$DB_OBJECT_CACHE 2007.6.4 本视图提供对象在library cache(shared pool)中对象统计&#xff0c;提供比v$librarycache更多的细节&#xff0c;并且常用于找出shared pool中的活动对象。 v$db_object_cache中的常用列&#xff1a; OWNER&#xff1a;对…

Java Platform Standard Edition 8 Documentation

下面这个图挺有用的&#xff0c;收藏一下。Oracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JRE) 8.JDK 8 is a superset of JRE 8, and contains everything that is…

清除端口占用的程序

程序启动的过程中&#xff0c;有时候会提示“端口被占用”。如何快速的找到占用该端口的进程&#xff1f;网上有很多种方法&#xff0c;这里自己整理了下&#xff0c;使用DOS命令查询端口并清除端口占用的程序&#xff0c;做个笔记。 windows系统下DOS命令&#xff1a; 1.查看端…

Python进阶06 循环对象

Python进阶06 循环对象 作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; 这一讲的主要目的是为了大家在读Python程序的时候对循环对象有一个基本概念。 循环对象的并不是随着Python的诞生就存在的…

使用 WordPress 主题制作的20个精美网页

WordPress 是一款个人博客系统&#xff0c;并逐步演化成一款内容管理系统软件&#xff0c;它是使用 PHP 语言和 MySQL 数据库开发的。用户可以在支持 PHP 和 MySQL 数据库的服务器上使用自己的博客。这里给大家分享使用 WordPress 主题制作的20个精美网页。 您可能感兴趣的相关…

内存地址空间

一个存储器(内存)被划分为若干个存储单元,一个存储单元可存储一个字节(Byte) CPU可寻址到多少个存储单元即这些存储单元就是CPU的内存地址空间 如8086CPU有20根地址线可寻址1M的存储单元,那么这个1M个可寻址到的存储单元就构成这个CPU的内存地址空间 而实际的存储器可以是RA…

关于监听与控制设备旋转全解析(UIDeviceOrientationDidChangeNotification)

一类情况&#xff1a; 初始化app的方向&#xff0c;比如只支持横屏或者竖屏。下面举例只支持竖屏的案例 在app的属性里面手动设置 上面标注了该app支持的方向种类&#xff0c;要是在app里支持Portrait方向&#xff0c;还需要添加以下代码 二类情况&#xff1a; 上面的代码表明a…

标志寄存器FLAG

FLAG标志寄存器按位操作&#xff0c;FLAG是16位寄存器&#xff0c;第0位为CF标志第2位为PF标志... 如图(FLAG各标志位以及在DEBUG中对应的显示)&#xff1a;

PHP 性能分析: Xhprof Xhgui

PHP 性能分析: Xhprof & Xhgui 转载于:https://www.cnblogs.com/joshua317/articles/5072859.html

powerdesigner低版本打开高版本方式为只读导致无法保存PD只读read-only-mode

由于版本号不一致 打开PD文件后提示&#xff1a; 点击【确定】后打开&#xff0c;点击【取消】后打不开 但打开后修改完毕保存提示&#xff1a; 解决办法&#xff1a; pdm文件实际上是个xml文件&#xff0c;直接用文本编辑器打开该文件修改版本号即可 把根节点最后的版本号改成…

字符串加解密

题目描述 题目描述 1、对输入的字符串进行加解密&#xff0c;并输出。 2加密方法为&#xff1a; 当内容是英文字母时则用该英文字母的后一个字母替换&#xff0c;同时字母变换大小写,如字母a时则替换为B&#xff1b;字母Z时则替换为a&#xff1b; 当内容是数字时则把该数字加1&…

Win32 一个helloworld对话框

.386.model flat,stdcalloption casemap:none include windows.inc include user32.inc include kernel32.inc includelib user32.lib includelib kernel32.lib.data ;数据段titleS db helloworld,0 messageS db hello,welcome to win32,0.code ;代码段start: invoke Messa…

Python补充06 Python之道

Python补充06 Python之道 作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; Python有一个彩蛋&#xff0c;用下面语句调出&#xff1a; import this 该彩蛋的文档记录于PEP 20。 语句执行之后&…

传送指令 MOV

MOV dest,src ;dest <-- srcMOV指令把一个字节或字从源地址src送入目的地址destsrc源操作数可以是立即数,寄存器,段寄存器,存储单元MOV AX,10 ;MOV 寄存器,数据 eg-1MOV AX,BX ; MOV 寄存器,寄存器 eg-2MOV AX,[0] ;MOV 寄存器,内存单元 eg-3MOV [0],AX ;MOV 内存单元…