超实用的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 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
Oct 11 Javascript
jQuery的Ajax的自动完成功能控件简要说明
Feb 22 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
Nov 22 Javascript
jquery 使用简明教程
Mar 05 Javascript
JS实现浏览器状态栏显示时间的方法
Oct 27 Javascript
jQuery实现div拖拽效果实例分析
Feb 20 Javascript
Vue2.0组件间数据传递示例
Mar 07 Javascript
js图片轮播插件的封装
Jul 21 Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
Aug 22 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
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
php mysql数据库操作类
2008/06/04 PHP
php实现的用户查询类实例
2015/06/18 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
django使用xadmin的全局配置详解
2019/11/15 Python
python实现贪吃蛇双人大战
2020/04/18 Python
python Matplotlib模块的使用
2020/09/16 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
2015年公司新年寄语
2014/12/08 职场文书
大连星海广场导游词
2015/02/10 职场文书
实习单位意见
2015/06/04 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
js之ajax文件上传
2021/05/13 Javascript
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA