超实用的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 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
javascript学习笔记(二)数组和对象部分
Sep 30 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
vue .sync修饰符的使用详解
Jun 15 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 jQuery
webpack的tree shaking的实现方法
Sep 18 Javascript
vue3实现v-model原理详解
Oct 09 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
Nov 07 Javascript
Vue组件跨层级获取组件操作
Jul 27 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
Sep 09 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
中英文字符串翻转函数
2008/12/09 PHP
php HandlerSocket的使用
2011/05/02 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
使用Python制作微信跳一跳辅助
2018/01/31 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
python打包成so文件过程解析
2019/09/28 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
python中的unittest框架实例详解
2021/02/05 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
前厅部经理岗位职责范文
2014/02/04 职场文书
学术会议主持词
2014/03/17 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
2015新学期家长寄语
2015/02/26 职场文书
小学运动会加油词
2015/07/18 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS