超实用的JavaScript代码段 附使用方法


Posted in Javascript onMay 22, 2016

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

本文为大家整理了5段实用JavaScript代码,便于大家进行开发。

1. 判断日期是否有效

JavaScript中自带的日期函数还是太过简单,很难满足真实项目中对不同日期格式进行解析和判断的需要。JQuery也有一些第三方库来使日期相关的处理变得简单,但有时你可能只需要一个非常简单的函数,而不想引入一个庞大的第三方库。这时,你可以使用下面这段日期校验代码,它允许你自定义日期格式并进行日期有效性的校验。

function isValidDate(value, userFormat) {

 // Set default format if format is not provided
 userFormat = userFormat || 'mm/dd/yyyy';

 // Find custom delimiter by excluding
 // month, day and year characters
 var delimiter = /[^mdy]/.exec(userFormat)[0];

 // Create an array with month, day and year
 // so we know the format order by index
 var theFormat = userFormat.split(delimiter);

 // Create array from user date
 var theDate = value.split(delimiter);

 function isDate(date, format) {
  var m, d, y, i = 0, len = format.length, f;
  for (i; i < len; i++) {
   f = format[i];
   if (/m/.test(f)) m = date[i];
   if (/d/.test(f)) d = date[i];
   if (/y/.test(f)) y = date[i];
  }
  return (
   m > 0 && m < 13 &&
   y && y.length === 4 &&
   d > 0 &&
   // Check if it's a valid day of the month
   d <= (new Date(y, m, 0)).getDate()
  );
 }

 return isDate(theDate, theFormat);
}

使用方法:
下面这个调用返回false,因为11月份没有31天

isValidDate('dd-mm-yyyy', '31/11/2012')

2. 获取一组元素的最大宽度或高度

下面这个函数,对于需要进行动态排版的开发人员非常有用。

var getMaxHeight = function ($elms) {
 var maxHeight = 0;
 $elms.each(function () {
  // In some cases you may want to use outerHeight() instead
  var height = $(this).height();
  if (height > maxHeight) {
   maxHeight = height;
  }
 });
 return maxHeight;
};

使用方法:

$(elements).height( getMaxHeight($(elements)) );

3. 高亮文本

有很多JQuery的第三方库可以实现高亮文本的功能,但我更喜欢用下面这一小段JavaScript代码来实现这个功能,它非常短小,而且可以根据我的需要去进行灵活的修改,而且可以自己定义高亮的样式。下面这两个函数可以帮助你创建自己的文本高亮插件。

function highlight(text, words, tag) {

 // Default tag if no tag is provided
 tag = tag || 'span';

 var i, len = words.length, re;
 for (i = 0; i < len; i++) {
  // Global regex to highlight all matches
  re = new RegExp(words[i], 'g');
  if (re.test(text)) {
   text = text.replace(re, '<'+ tag +' class="highlight">$&</'+ tag +'>');
  }
 }

 return text;
}

你同样会需要取消高亮的函数:

function unhighlight(text, tag) {
 // Default tag if no tag is provided
 tag = tag || 'span';
 var re = new RegExp('(<'+ tag +'.+?>|<\/'+ tag +'>)', 'g');
 return text.replace(re, '');
}

使用方法:

$('p').html( highlight(
  $('p').html(), // the text
  ['foo', 'bar', 'baz', 'hello world'], // list of words or phrases to highlight
  'strong' // custom tag
));

4. 文字动效

有时你会希望给你的一段文字增加动效,让其中的每个字都动起来。你可以使用下面这段jQuery插件代码来达到这个效果。当然你需要结合一个CSS3 transition样式来达到更好的效果。

$.fn.animateText = function(delay, klass) {

 var text = this.text();
 var letters = text.split('');

 return this.each(function(){
  var $this = $(this);
  $this.html(text.replace(/./g, '<span class="letter">$&</span>'));
  $this.find('span.letter').each(function(i, el){
   setTimeout(function(){ $(el).addClass(klass); }, delay * i);
  });
 });

};

使用方法:

$('p').animateText(15, 'foo');

5. 逐个隐藏元素

下面这个jQuery插件可以根据你设置的步长(间隔时间)来逐个隐藏一组元素。在列表元素的重新加载中使用,可以达到很好的效果。

$.fn.fadeAll = function (ops) {
 var o = $.extend({
  delay: 500, // delay between elements
  speed: 500, // animation speed
  ease: 'swing' // other require easing plugin
 }, ops);
 var $el = this;
 for (var i=0, d=0, l=$el.length; i<l; i++, d+=o.delay) {
  $el.eq(i).delay(d).fadeIn(o.speed, o.ease);
 }
 return $el;
}

使用方法:

$(elements).fadeAll({ delay: 300, speed: 300 });

以上只是那些实用JavaScript代码段中的一小部分,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JS获取各种浏览器窗口大小的方法
Jan 14 Javascript
js实现键盘控制DIV移动的方法
Jan 10 Javascript
jQuery插件datalist实现很好看的input下拉列表
Jul 14 Javascript
jquery.mousewheel实现整屏翻屏效果
Aug 30 Javascript
js判断移动端是否安装某款app的多种方法
Dec 18 Javascript
JS阻止事件冒泡行为和闭包的方法
Jun 16 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
Sep 04 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
Sep 27 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
JavaScript数组合并的多种方法
May 22 #Javascript
浅析JavaScript回调函数应用
May 22 #Javascript
为什么JavaScript没有块级作用域
May 22 #Javascript
全面解析Bootstrap中nav、collapse的使用方法
May 22 #Javascript
全面解析bootstrap格子布局
May 22 #Javascript
Bootstrap模块dropdown实现下拉框响应
May 22 #Javascript
基于Bootstrap实现图片轮播效果
May 22 #Javascript
You might like
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
总结python爬虫抓站的实用技巧
2016/08/09 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
PyQt5 多窗口连接实例
2019/06/19 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
python中什么是面向对象
2020/06/11 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
干部培训自我鉴定
2014/01/22 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
尊师重教主题班会
2015/08/14 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
学生会自荐信
2019/05/16 职场文书
导游词之镜泊湖
2019/12/09 职场文书