超实用的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获取网页可见区域、正文以及屏幕分辨率的高度
May 15 Javascript
轻松实现JavaScript图片切换
Jan 12 Javascript
js下将金额数字每三位一逗号分隔
Feb 19 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
Feb 21 Javascript
详解webpack进阶之loader篇
Aug 23 Javascript
如何让你的JS代码更好看易读
Dec 01 Javascript
Vue列表渲染的示例代码
Nov 01 Javascript
vue源码中的检测方法的实现
Sep 26 Javascript
js最全的数组的降维5种办法(小结)
Apr 28 Javascript
js实现轮播图特效
May 28 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
Oct 24 Javascript
Vue Element UI自定义描述列表组件
May 18 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 上传文件的方法(类)
2009/07/30 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
关于JSON与JSONP简单总结
2016/08/16 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
js断点调试心得分享(必看篇)
2017/12/08 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python中几个比较常见的名词解释
2015/07/04 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
Python3运算符常见用法分析
2020/02/14 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
文员个人求职自荐信
2013/09/21 职场文书
食品安全责任书
2014/04/15 职场文书
环卫工人节活动总结
2014/08/29 职场文书
保研推荐信范文
2015/03/25 职场文书
个人求职意向书
2015/05/11 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python