您的位置:

首页 >

网络编程 >

微信小程序 常用工具类详解及实例 >

微信小程序 常用工具类详解及实例

2016-10-01 10:05:25

分类:网络编程

微信小程序 常用工具类详解前言:做微信小程序当中,会遇到好多的工具类util.js,这里记载下来以便平常使用 (Ps:建议通过目录查看)-获取日期(格式化)function formatTime(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinutes() var second = date.getSeconds() return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')}function formatNumber(n) { n = n.toString() return n[1] ? n : '0' + n}-获取动态更新时间function getDateDiff (dateTimeStamp) { var minute = 1000 * 60; var hour = minute * 60; var day = hour * 24; var halfamonth = day * 15; var month = day * 30; var year = day * 365; var now = new Date().getTime(); var diffValue = now - dateTimeStamp; if(diffValue < 0){ //非法操作 return '数据出错'; } var yearC = diffValue / year; var monthC = diffValue / month; var weekC = diffValue / (7 * day); var dayC = diffValue / day; var hourC = diffValue / hour; var minC = diffValue / minute; if(yearC >= 1){ result = parseInt(yearC) + '年以前'; }else if(monthC >= 1){ result = parseInt(monthC) + '个月前'; }else if(weekC >= 1){ result = parseInt(weekC) + '星期前'; }else if(dayC >= 1){ result = parseInt(dayC) + '天前'; }else if(hourC >= 1){ result = parseInt(hourC) + '小时前'; }else if(minC >= 5){ result = parseInt(minC) + '分钟前'; }else{ result = '刚刚发表'; } return result;}感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

in判断的是对象的所有属性,包括对象实例及其原型的属性;而hasOwnProperty则是判断对象实例的是否具有某个属性。示例代码:<script type="text/javascript"> function Person(){ } Person.prototype.name = "allen"; var person = new Person(); console.log(person.hasOwnProperty("name")); //false console.log("name" in person); //true console.log(person.name); //"allen" person.name = "justforse"; console.log(person.hasOwnProperty("name")); //true console.log("name" in person); //true console.log(person.name); //"justforuse" delete person.name; console.log(person.hasOwnProperty("name")); //false console.log("name" in person); //true console.log(person.name); //"allen"</script>以上代码执行的时候,name属性要么是从实例中获取的,要么是来源于原型,所以使用in 来访问 name属性始终返回true;而hasOwnProperty()只在属性存在与对象实例中时才返回true,当删除了实例中的name属性后,就恢复了原型中name属性的连接,所以返回allen。这篇浅谈js使用in和hasOwnProperty获取对象属性的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

上周五应着公司临时需求,一天的时间解决掉官网(ps:比较简单哈哈),需求里面有一个特效就是数字递增到指定的数值,其实JS写也不复杂的,但是我发现一个js小插件,这个插件轻巧简单,用起来也非常简单实用。在这里分享给小盆友们吧,喜欢的直接拿走。上面就是这个插件的效果,我们来看一下怎么使用的吧第一: HTML部分这里简单列举一个 <div class="counter col_fourth"> <h2 class="timer count-title" id="count-number" data-to="300" data-speed="1500"></h2> <p class="count-text ">小月博客</p> </div>上面我们来了解两个关键的东西: data-to   这个属性控制你最终要递增的数值是多少 data-speed    这个看英文的意思就很清楚了就是表示数据递增的速度了ps: 这里的class和id  根据大家各自的修改去调整就好了,第二:JS部分也是插件的核心代码$.fn.countTo = function(a) { a = a || {}; return $(this).each(function() { var c = $.extend({}, $.fn.countTo.defaults, { from: $(this).data("from"), to: $(this).data("to"), speed: $(this).data("speed"), refreshInterval: $(this).data("refresh-interval"), decimals: $(this).data("decimals") }, a); var h = Math.ceil(c.speed / c.refreshInterval), i = (c.to - c.from) / h; var j = this, f = $(this), e = 0, g = c.from, d = f.data("countTo") || {}; f.data("countTo", d); if (d.interval) { clearInterval(d.interval) } d.interval = setInterval(k, c.refreshInterval); b(g); function k() { g += i; e++; b(g); if (typeof(c.onUpdate) == "function") { c.onUpdate.call(j, g) } if (e >= h) { f.removeData("countTo"); clearInterval(d.interval); g = c.to; if (typeof(c.onComplete) == "function") { c.onComplete.call(j, g) } } } function b(m) { var l = c.formatter.call(j, m, c); f.html(l) } })};$.fn.countTo.defaults = { from: 0, to: 0, speed: 1000, refreshInterval: 100, decimals: 0, formatter: formatter, onUpdate: null, onComplete: null};function formatter(b, a) { return b.toFixed(2)}$("#count-number").data("countToOptions", { formatter: function(b, a) { return b.toFixed(2).replace(/\B(?=(?:\d{3})+(?!\d))/g, ",") }});$(".timer").each(count);function count(a) { var b = $(this); a = $.extend({}, a || {}, b.data("countToOptions") || {}); b.countTo(a)};以上就是代码的全部了,css部分就不在这里显示了,demo下载的小伙伴在下面点击下载吧!其实这个插件可扩展性很大的,至于小伙伴喜欢什么样子的显示自己动手改造吧!demo下载请点击以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

学习了妙味课堂的图片切换(动画版)这个小效果相对简单一点。知识预备:【1】background-position-xbackground-position属性设置背景原图像(由 background-image 定义)的位置,意味着使用这个属性的前提是必须设置背景原图像background-image。background-position有两个属性值, background-position:x | y,用法上可以对其一个属性单独使用 background-position-x 和 background-position-y。准备工作完毕,开始写代码第一步由于这次需要的div很多,所以采用动态添加的方式,直接看代码<style> body{ margin: 0; background-color: #5e5e5e; } #box{ width: 857px; height: 574px; padding-top: 126px; padding-left:143px; background: url(img/bg.png) no-repeat; margin: 0px auto; } #wrap{ width: 700px; height: 420px; transform-style: preserve-3d; perspective: 800px; } #wrap div{ width: 10px; height: 420px; background: url(img/01.png) no-repeat; float: left; transition: .5s; } </style></head><body> <div id="box"> <div id="wrap"></div> </div> <script> //在wrap下,写70个div,每个div显示一张图片的一小片部分,这样70个div能完整的显示出一张图片 for(var i=0;i<70;i++){ str +='<div style="background-position-x:'+(-10*i)+'px"></div>'; } oWrap.innerHTML = str; //获取70个div var divs = oWrap.getElementsByTagName('div');    </script> </body>第二步写tab()函数,设置每个div要做的动画tab()函数// 每个div设置前一个div的透明度为1,并且设置自己的透明度为0和背景图片 function tab(n){ // 0 if(divs[n-1]){ divs[n-1].style.opacity = 1; } // 70 if(divs[n]){ divs[n].style.opacity = 0; divs[n].style.backgroundImage = "url(img/0"+imgNum+".png)"; } }第三步写go()函数,利用定时器改变tab()函数的参数并且适时的改变背景图片go()//给tab()函数传递n值 function go(){ timer = setInterval(function(){ tab(num); num++; //一张图片切换完毕 if(num == 71){ clearInterval(timer); //切换下一张图片 imgNum++; //num清0,动画效果从第一个div开始 num = 0; //当切到最后一张图片时,在从第一张开始切换 if(imgNum == 6){ imgNum = 1; } //切换完一张图片时切换下一张图片的间隔 setTimeout(go,800); } //div变换的速度 },80); }总结:这个动画效果实现起来简单,代码问题不大,主要就是实现思路的问题。源码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>图片切换(动画版)</title> <style> body{ margin: 0; background-color: #5e5e5e; } #box{ width: 857px; height: 574px; padding-top: 126px; padding-left:143px; background: url(img/bg.png) no-repeat; margin: 0px auto; } #wrap{ width: 700px; height: 420px; transform-style: preserve-3d; perspective: 800px; } #wrap div{ width: 10px; height: 420px; background: url(img/01.png) no-repeat; float: left; transition: .5s; } </style></head><body> <div id="box"> <div id="wrap"></div> </div> <script> //在wrap下,写70个div,每个div显示一张图片的一小片部分,这样70个div能完整的显示出一张图片 for(var i=0;i<70;i++){ str +='<div style="background-position-x:'+(-10*i)+'px"></div>'; } oWrap.innerHTML = str; //获取70个div var divs = oWrap.getElementsByTagName('div'); go(); //给tab()函数传递n值 function go(){ timer = setInterval(function(){ tab(num); num++; //一张图片切换完毕 if(num == 71){ clearInterval(timer); //切换下一张图片 imgNum++; //num清0,动画效果从第一个div开始 num = 0; //当切到最后一张图片时,在从第一张开始切换 if(imgNum == 6){ imgNum = 1; } //切换完一张图片时切换下一张图片的间隔 setTimeout(go,800); } //div变换的速度 },80); } // 每个div设置前一个div的透明度为1,并且设置自己的透明度为0和背景图片 function tab(n){ // 0 if(divs[n-1]){ divs[n-1].style.opacity = 1; } // 70 if(divs[n]){ divs[n].style.opacity = 0; divs[n].style.backgroundImage = "url(img/0"+imgNum+".png)"; } } </script></body></html>以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

前言nodejs在使用mongdb数据库中经常会使用到嵌套,比如一个多级分类等。这里我使用学校-->学院-->学生来展示使用populate处理嵌套。定义modal在模式中,我们需要使用Schema.ObjectId来表示要指向数据在mongodb数据库中的_id。学校在学校的Schema中,colleges属性是要包含的学院的_id属性数组。var SchoolSchema = new Schema({ name: String, colleges: [{ type: Schema.ObjectId, ref: 'College' }], createTime: { type: Date, default: Date.now() }});var School = mongoose.model('School', SchoolSchema);学院var CollegeSchema = new Schema({ name: String, students: [{ type: Schema.ObjectId, ref: 'Student' }], createTime: { type: Date, default: Date.now() }});var College = mongoose.model('College', CollegeSchema);学生var StudentSchema = new Schema({ name: String, sex: String, age: Number, createTime: { type: Date, default: Date.now() }});var Student = mongoose.model('Student', StudentSchema);查找直接查找查找学校并找到指向的学院School .find() .populate('colleges', ['_id','name']) .exec((err, schools) => { if (err) { console.log(err) } console.log(schools) })populate的第一个参数是学校表中需要指向学院表的属性,即colleges;第二个参数为要在学院中查找的属性。如果不填写第二个参数,则默认全都查出。这样查找出的结果中,学院的学生属性是该学院包含的学生的_id属性。如果需要都查找出来需要使用嵌套populate。嵌套School .find() .populate({ path: 'colleges', select: ['_id', 'name'], // model: 'College', populate: { path: 'students', select: ['_id', 'name'] // model: 'Student' } }) .sort({ createTime: -1 }).exec(function(err, schools) { if (err) { console.log(err) } });总结以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

焦点访谈

最新最热的文章

更多 >

COPYRIGHT (©) 2017 Copyright ©2017 365体育在线备用网址 网站地图

联系我们

827570882

扫描二维码分享到微信