javascript
的编码能力比较弱,但并不代码它不能做,只不过,需要你花一点功夫,前段时间在做日历的时候,需要从textbox读取日期,问题的关键是textbox
的日期可能是美国标准,可能是中国标准等等,没有办法将之转成日期格式,也就不能将日期在日历中定位到当天。在csdn上问了一个问题,结果没有人答得合
适,我一怒之下,自儿写了一个,还行,能用。
说说需求吧,基本上很简单,就是能识别yyyymmdd及yymd这样的日期格式,或者yy、yyyy、M、MM、d、dd的任意组合。如yyyy年MM
月dd日,匹配2009年06月10日。
先看代码吧:
//将字符串转换为日期
String.prototype
.toDate
=
function
(
format)
{
pattern =
format.replace
(
"yyyy"
,
"(\~
1{4})"
)
.replace
(
"yy"
,
"(\~
1{2})"
)
.replace
(
"MM"
,
"(\~
1{2})"
)
.replace
(
"M"
,
"(\~
1{1,2})"
)
.replace
(
"dd"
,
"(\~
1{2})"
)
.replace
(
"d"
,
"(\~
1{1,2})"
)
.rep ......
正则表达式是一个非常非常非常强大的语言,这里连续用了三个非常,我觉得还不够,它娇小但却功
能强大,绝对的浓缩的就是精华,我发现我越来越喜欢它了。
这段时间做日期的处理,需要用到日期的计算,包括加减什么的,于是做了一个公用处理的扩展,叫
String.prototype.dateExpression。因为日期处理都会用到表达式,例如增加10天,我一般会用10d或者+10d一表示,
这样不用每个函数都加上太多的参数。例如:
function dateAdd(date1, date2, interval, number)
Date.prototype.dateAdd = function(expr) //expr, eg. +10d,-5y,
+20m.....
对比一下,这两个函数哪一个更简约呢?毫无疑问,第二个函数在调用的时候要更加简单,来看分析expr中表达式的函数,先看这个:
//获取日期的偏移量
//获取分析后的日期偏移量数据
String.prototype
.dateExpression
=
function
(
)
{
var
pattern =
"^[+-]\\
d+(ms)|[yMdhms]$"
;
//这里有个小技巧,(ms)应该放到前面,因为放到后面会和m及s冲突,
//或者也可以把[]的ms分到不同的位置,如yMdmhs
var
reg =
new
RegExp(
pattern)
;
if
(
reg.test
(
this
......
javascript中对日期是比较弱的,特别是日期格式化和从字符中获取日期这两个功能是没
有的,自己写程序的时候封装了这些功能,分享一下,希望对大家有用。这些扩展有些是网上一些朋友写的,经过我的改造,有些是我自己写的。
函数的功能分别是:
Date.prototype.format =
function(format):根据表达式将日期格式化为字符串,要求指定一个参数format。参数format表示格式化的表达式,采用标准的日
期表达式,如yyyy表示年,MM表示月。示例:new
Date().format("yyyy-MM-dd");将返回2009-12-23的字符串。
Date.prototype.clone =
function():日期克隆,这其实是一个比较简单的函数,日期是引用类型,所以会需要这个功能,特别是在参数传递的时候。
Date.prototype.dateDiff =
function(interval,
date):日期相减,这个函数我几写了日期天的相减,因为我还没有其它类型的日期相减,呵呵,如果你要用的话,自己写一下也很容易,改天我有时间再补上
去吧。
Date.prototype.dateAdd =
function(expr):日期相加,在日期计算的时候用,这个函数需要重点介绍就是expr这个表达式,这个表达式我后面有一个对String的扩
展,它可以支持 +2d(表示加2天 ......
这两天在做一个控件的时候遇到要触发onchange事件的问题,本来以为值一旦更改就会触发onchange事件,但实际上不是想象中的那样。
对于onBlur和onFocus可以直接调用object.Blur()和object.Focus(),但javascript中没有object.Change事件。于是就在网上查了一下,发现object.fireEvent()可以触发事件,如触发onchange事件则是object.fireEvent('onchange'),以此类推。 ......
现在的RIA(Rich Internet
applications)越来越流行,Javascript在这中间起到了不可忽视的作用,这个世界上,完全不用JS的网站应该很少了,一些用户体验好
的网站,大多采用了Flash或者JS,而以JS居多。比如像Qunar,就是以Javascript +
Ajax为主的网站,前台页面主要是HTML,后台生成JSON数据。再比如说Ajax最早大规模应用者Google,我们常用的GMail也
好,Google Calendar也好,Google Docs,Google Map,都大量采用了Javascript。还有例如Yahoo等等。
随着大规模地采用Javascript,问题就来了,我们知道,JS是一种解析性语言,代码都是明文的,是没有经过编译的源代码,这样就造成了JS
过大的问题,一个用户体验丰富的页面加上框架,基本上JS就可以轻松超过200K。在欧美日韩等网速比较快的地方,这点算不了什么,而在国内的话,如果
JS就有200K,再加上图片之类的,估计得上M了。这样一下来,网速将会变慢,而如果速度变慢,RIA就没有什么意义了,RIA的本意就是提高用户体验
与合理利用客户端多余的资源。
怎么办?还好,我们还有招,正因为JS是文本,我们就可以采用压缩的方式,基本上我们有两种解决方案,第一种是服务器级别的,使用Gzip对JS进
行压缩,这 ......
JavaScript 的成功让人津津乐道,为 Web 网页编写 JavaScript 代码已经是所有 Web 设计师的基本功,这门有趣的语言蕴藏着许多不为人熟知的东西,即使多年的 JavaScript 程序员,也未能完全吃透。本文从7个方面讲述 JavaScript 中那些你不很熟知但非常实用的技巧。
简略语句
JavaScript 可以使用简略语句快速创建对象和数组,比如下面的代码:
可以使用简略语句如下:
对象 car 就此创建,不过需要特别注意,结束花括号前一定不要加 ";" 否则在 IE 会遇到很大麻烦。
创建数组的传统方法是:
使用简略语句则:
另一个可以使用简略语句的地方是条件判断语句:
可以简略为:
JSON 数据格式
JSON 是 "JavaScript Object Notation" 的缩写,由 Douglas Crockford 设计,JSON 改变了 JavaScript 在缓存复杂数据格式方面的困境,如下例,假如你要描述一个乐队,可以这样写:
你可以在 JavaScript 中直接使用 JSON,甚至作为某些 API 的返回数据对象,以下代码调用著名书签网站 delicious.com 的一个 API,返回你在该网站的所有书签,并显示在你自己的网站:
JavaScript 本地函数 (Math, Array 和 String)
JavaScript 有很多内置函数,有效的使用,可以避免很多不必要的代 ......