分类: 系统运维
2008-04-03 09:16:26
"">Snapshots |
现在需要改变.html文档的一些行为,比如点击链接时不是直接连接到该图片(另一个网页),而是在网页的空白部分显示该图片。 定义showPic.js function showPic(whicPic){ var source=whicPic.getAttribute("href"); var placeholder=document. getElementById("placeholder"); placeholder.setAttribute("src",source); } //whicPic指的是页面中的链接 //函数的目的就是需要在placeholder设置所点链接href属性的图片 //在点击某个元素时,该元素会被保存为一个this对象,从而这样 //showPic(this)将该元素传入到该函数中。 #此时当点击元素时placeholder中会显示图片但是链接被点击的默认行为#还是会发生 //在每个元素中加入以下代码:onclick="showPic(this);return //false;" //事件处理函数的工作机制: //在给某个元素添加了事件处理函数之后一旦发生了预定的事件,相应的//javascript函数被调用,并返回一个结果true或者false。若为true则//事件处理函数认为链接被点击了,若为false事件处理函数认为链接没有被点//击。 |
对javascript函数功能进行扩展 1,childNodes属性 用于检索一个元素的所有子元素。返回一个数组,包含给定元素节点的所有子元素。 如获取body元素的所有子元素: var body=document.getElementsByTagName("body")[0]; body.childNodes; DOM为body元素提供了一个更为简单的使用方式:document.body; document.body.childNodes; 2,nodeType属性 body元素中应该只有三个元素,h1,ul,img元素,但输出的数字却远大于此。这时因为文档树的的节点类型并非只有元素节点一种。childNodes包含了文档中其他的属性节点以及文本节点。 可以使用nodeType属性来区分文档中的各个节点类型,它返回的是一个数字 它共有12中可取值,其中只有3中是有价值的: ·元素节点的值为1 ·属性节点的值为2 ·文本节点的值为3 |
在文档末尾添加 Choose an image ,需要在选定某张图片时更改 |
预留退路 臭名昭著的弹出窗: window.open(url,name,features); eg: window.open("", "popup","width=320,height=480"); #test.js
也可以通过javascript为协议实现以上的功能: Example 或者通过内嵌事件处理函数来实现: Example 将href属性设置为#表示创建了一个空连接或者指向该文档的开头。“return false”的意思前面已经交代。 但是在以上的html代码中onclick对应的javascript代码可能不会被执行,因为用户既有可能禁用了javascript功能。预留退路: "popUp('');return false"> Example 更为简洁的方式: "popUp(this.getAttribute('href'));return false"> Example 以上例子还是稍有不足之处,如果能将javascript代码放在外部文件中将更加完善。 分离javascript 向CSS学习,javascript并不要求事件必须在html文档中处理。可以在javascript文件中把一个事件添加到html文档中的某个元素上面。
向后兼容 现代的浏览器大多支持javascript,而且对DOM的支持对非常不错。但是在某些版本比较来的browser中,可能无法理解DOM提供的属性和方法。 javascript中几乎所有的东西都被当作对象对待。意味着可以使用以下的方式检测某个DOM方法在浏览器中是否被支持。 if(method){ statements; } eg: function myFunction(){ if(document.getElementById){ statement;//如果浏览器不支持该方法,则{}中的内容永远不会 //被执行。 } } 如此写法的缺点就是,对DOM方法的检测将被包含在一堆一堆的花{}中(当需要检测的DOM方法较多的时候)。反向进行检测“如果不理解这个方法请离开”: if(!method)return false;
|