您的位置:

首页 >

网络编程 >

浅谈javascript 归并方法 >

浅谈javascript 归并方法

2016-03-05 06:11:03

分类:网络编程

ECMAScript5 还新增了2个归并数组的方法:reduce()和reduceRight()。 这两个都会迭代数组的所有项        reduce():从第一项开始逐个遍历到最后。        reduceRight():从数组的最后一项开始,遍历到数组的第一项。这两个方法都接受两个参数:在每一项上调用的函数(参数为:前一个值,当前值,项的索引,数组对象) 这个函数返回的任何值斗殴会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,         因此第一个参数是数组的第一项,第二个参数是数组的第二项         和 作为归并基础的初始值。        使用reduce()方法可以执行数组中所有值之和的操作,比如:复制代码 代码如下:        var values = [1, 2, 3, 4, 5];        var sum = values.reduce(function (prev, cur, index, array) {            return prev + cur;        });        alert(sum);        //结果一样,只是方向相反而已        var sum2=values.reduceRight(function (prev,cur,index,array) {            return prev+cur;        });        alert(sum2);归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。

jQuery可以制作出与Flash媲美的动画效果,这点绝对毋庸置疑,本文将通过实例演示一个基于鼠标滚轮驱动的图片切换效果。本例实现的效果:鼠标滚轮滚动时图片进行切换。支持键盘方向键实现图片切换效果。支持点击图片切换,支持点击当前图片链接。进度条滑块展示图片图片数量进度。XHTML<div class="demo"> <div id="imageflow"> <div id="loading"><img src="images/loader.gif" alt="loading" /></div> <div id="captions"></div> <div id="images"> <img src="images/s1.jpg" alt="image1" /> <img src="images/s2.jpg" alt="image2" /> <img src="images/s3.jpg" alt="image3" /> <img src="images/s4.jpg" alt="image4" /> </div> <div id="scrollbar"> <div id="slider"></div> </div> </div> </div> div.demo是最外面的一层,包含了整个滚动效果所需的所有元素。#imageflow是必需的,且与其内部包含的元素的ID名称不能修改,如确实要修改,就要先定义或直接修改JS代码了。#loading用来装载一个加载动画的图片,当然你也可以直接写成"loading"或其他文字。#captions用来显示图片的标题。#images放置所要滚动切换的图片,数量不限。#scrollbar就是展示图片的进度条。#slider是一个滑块,当切换图片时,滑块会滑动到相应的位置,以展示图片数量的位置。CSS.demo { width:860px; height:300px; margin:20px auto; position:relative; background:#e8f5fe; overflow:hidden } #images { margin:20px 0 0 60px; width:860px } #images img { position:absolute; margin-top:-160px } #loading { margin:0; color:#fff; text-align:center } #loading img { position:ralative; margin:0 } #captions { position:relative; height:24px; line-height:24px; top:100px; left:320px; background:url(images/cap_bg.png) no-repeat center center; color:#fff; font-weight:bold; text-align:center; z-index:10000 } #scrollbar { position:relative; top:-100px; height:2px; z-index:10001 background:#abcd3a url(images/scroll.gif) repeat-x; } #slider { position:absolute; width:15px; height:4px; margin:-1px 0 0 -1px; background:url(images/bar.gif) no-repeat; z-index:10002 } CSS是整个效果实现的关键部分,如果CSS控制不好,将得不到你要的效果。.demo设置了宽度和高度,并设置position:relative和overflow:hidden,目的是为了让鼠标滑轮滚动作用的范围限制在.demo里。#images设置了margin值,并对内部的img设置了相对定位。#captions设置了用来显示图片标题的样式,注意我使用半透明的图片cap_bg.png作为背景图片,在IE6下不支持透明的png图片,所以你要进行相关的处理。接下来看滚动进度条和滑块的设置,都运用的定位和深度设置,为何要这样设置,只有大家去慢慢测试才会知道其中的奥妙。引入jquery库和滑动js文件<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/imageflow.js"></script> 所有的js动作都在imageflow.js完成,我只做了略微的改动,大家可以直接使用。现在可以看到效果了吧。但是还有问题:图片连接地址如何获取?最终的效果应该是点击当前展示的图片时,会连接到一个页面,用来展示该图片相关的详细信息。那么这个链接地址如何获取,大概在第252行开始有这样两行代码:image.url = image.getAttribute("longdesc"); image.ondblclick = function() { document.location = this.url; } 可以看出,图片的链接地址来源于它的属性:longdesc,当单击图片的时候,页面将会跳转到相应的地址页面。好现在我们回到刚开始的XHTML代码,只需给每张图片指定longdesc属性,并将值设为对应的网页地址。如:<img src="images/s1.jpg" alt="image1" longdesc="#" /> 现在,任务算是完成了。看完本例你会发现,你根本不需要些一句jquery代码,因为imageflow都已经完成了所有的操作代码。以上就是本文的全部内容,希望对大家的学习有所帮助。

在IE浏览器中添加或删除事件用attachEvent、detachEvent。在其他标准浏览器中则用addEventListener、removeEventListener。下面的对事件的添加和删除做了封装。直接看代码吧!/*** @description 事件绑定,兼容各浏览器* @param target* 事件触发对象* @param type* 事件* @param func* 事件处理函数*/function bind(target, type, func) {if (target.addEventListener) {// 非ie 和ie9target.addEventListener(type, func, false);} else if (target.attachEvent) { // ie6到ie8target.attachEvent("on" + type, func);} else {target["on" + type] = func; // ie5}}/*** @description 事件移除,兼容各浏览器* @param target* 事件触发对象* @param type* 事件* @param func* 事件处理函数*/function unbind(target, type, func) {if (target.removeEventListener) {target.removeEventListener(type, func, false);} else if (target.detachEvent) {target.detachEvent("on" + type, func);} else {target["on" + type] = null;}}其他补充关于addEventListener第三个参数的含义addEventListener的第三个参数W3C DOM里用来新增触发事件的函数叫AddEventListener,不过我一直不知道这个函数的第三个参数是要做什么用的,总是随便设,也没发现差异再哪,前两天看ppk on javascript终于看到说明了,至于很久以前就有的DOM的标准文件,我其实根本没去找过这个参数的资讯。这个参数叫做useCapture,是一个boolean值,就是true or false,如果送出true的话就是浏览器会使用Capture方式,false的话是Bubbling,只有在特定状况下才会有影响,通常建议是false,而会有影响的情形是目标元素(target element)有祖先元素(ancestor element),而且也有同样的事件对应函数,我想,看图会比较清楚。范例有两层的div方块像这张图所显示的,我的范例有两层div元素,而且都设定有click事件,一般来说,如果我在内层蓝色的元素上click不只会触发蓝色元素的click事件,还会同时触发红色元素的click事件,而useCapture这个参数就是在控制这时候两个click事件的先后顺序。如果是false,那就会使用bubbling,他是从内而外的流程,所以会先执行蓝色元素的click事件再执行红色元素的click事件,如果是true,那就是capture,和bubbling相反是由外而内,会先执行红色元素的click事件才执行蓝色元素的click事件。附上两个范例,capture和bubbling,两个档案只有差在此一参数不同,可以发现事件的发生顺序不一样了。那如果不同层的元素使用的useCapture不同呢?就是会先从最外层元素往目标元素寻找设定为capture的事件,到达目标元素执行目标元素的事件后,再寻原路往外寻找设定为bubbling的事件。

本文实例讲述了JS实现的论坛Ajax打分效果。分享给大家供大家参考,具体如下:这是论坛常见的一种Ajax打分效果,使用了Discuz老版论坛的就有此种效果,目前有很多网站也有类似的,分享给大家吧,我觉得非常实用的Ajax评分效果,使用了一个背景图片,自己可以下载。运行效果截图如下:在线演示地址如下:http://demo.jb51.net/js/2015/js-dicuz-ajax-df-plugs-codes/具体代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>论坛Ajax评分效果</title><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css">*{margin:0;padding:0;font-size:12px}#show{font:bold 14px/2 Georgia;text-align:center;}.star{position:relative;width:150px;margin:0 auto;}.star,.index,.star a{overflow:hidden;height:25px;background:url('images/221815eep7piubznelxi3e.gif') repeat-x;color:#FFF;font:0/0 arial;}.index{position:absolute;z-index:1;top:0;left:0;margin:0;background-position:0 -60px;height:25px}.star a{position:absolute;z-index:3;top:0;width:30px;background-position:0 -90px;}.star a:hover{z-index:2;left:0;background-position:0 -30px;}a.star1{left:0;}a.star1:hover{width:30px;}a.star2{left:30px;}a.star2:hover{width:60px;}a.star3{left:60px;}a.star3:hover{width:90px;}a.star4{left:90px;}a.star4:hover{width:120px;}a.star5{left:120px;}a.star5:hover{width:150px;}</style><script>function go(){ var count=sum=distance=0; var dd,a; var as=document.getElementById("rank").getElementsByTagName("a"); var here=document.getElementById("here"); var show=document.getElementById("show"); for(var i=0;i<as.length;i++){ as[i].idx=i+1; as[i].onclick=function(){ ++count; this.w=30; distance+=this.idx*this.w; here.style.width=distance/count+"px"; dd=parseInt(here.style.width)/30; a=dd.toString().substr(0,4); show.innerHTML=a+"分"; return false; } }}window.onload=function(){go()}</script></head><body><br /><br /><br /><br /><br /><br /><br /><div id="rank" class="star"> <h3 id="here" class="index"></h3> <a title="给1分" href="#" class="star1">1</a> <a title="给2分" href="#" class="star2">2</a> <a title="给3分" href="#" class="star3">3</a> <a title="给4分" href="#" class="star4">4</a> <a title="给5分" href="#" class="star5">5</a></div><div id="show">打分..</div></body></html>希望本文所述对大家JavaScript程序设计有所帮助。

点击图片,图片拉伸放大显示,效果非常棒!使用方法:1、head区域引用文件 jquery.js,photorevealer.js,datouwang.css2、在文件中加入<!-- 代码 开始 --><!-- 代码 结束 -->区域代码3、图片个数可以自由增减,增加或者删除<td></td>即可4、如果图片信息更多,需要更大的空间,可修改photorevealer.js中第36行的数字核心代码:$(document).ready(function(){ $('.photo_slider').each(function(){ var $this = $(this).addClass('photo-area'); var $img = $this.find('img'); var $info = $this.find('.info_area'); var opts = {}; $img.load(function(){ opts.imgw = $img.width(); opts.imgh = $img.height(); }); opts.orgw = $this.width(); opts.orgh = $this.height(); $img.css ({ marginLeft: "-150px", marginTop: "-150px" }); var $wrap = $('<div class="photo_slider_img">').append($img).prependTo($this); var $open = $('<a href="#" class="more_info">More Info ></a>').appendTo($this); var $close = $('<a class="close">Close</a>').appendTo($info); opts.wrapw = $wrap.width(); opts.wraph = $wrap.height(); $open.click(function(){ $this.animate({ width: opts.imgw, height: (opts.imgh+30), borderWidth: "10" }, 600 ); $open.fadeOut(); $wrap.animate({ width: opts.imgw, height: opts.imgh }, 600 ); $(".info_area",$this).fadeIn(); $img.animate({ marginTop: "0px", marginLeft: "0px" }, 600 ); return false; }); $close.click(function(){ $this.animate({ width: opts.orgw, height: opts.orgh, borderWidth: "1" }, 600 ); $open.fadeIn(); $wrap.animate({ width: opts.wrapw, height: opts.wraph }, 600 ); $img.animate({ marginTop: "-150px", marginLeft: "-150px" }, 600 ); $(".info_area",$this).fadeOut(); return false; }); }); });以上所述就是本文的全部代码了,希望大家能够喜欢。

焦点访谈

最新最热的文章

更多 >

COPYRIGHT (©) 2017 Copyright ©2017 5060网址大全 网站地图

联系我们

827570882

扫描二维码分享到微信