手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

javascipt的{}中逗号带来的困扰

随便javascript 第5版的书出来,JS的写法也就越来越多了,以前定义一个对象,还得写var o = new Object();现在好了,直接var o = {};

可是这样带来的问题不少(其实是IE和FF的兼容性问题)

下面是一个朋友痛苦的经历:

 

XML/HTML代码
  1. 最近把YUI()引入到了现在做的项目当中,感觉做ajax非常顺手   
  2.   
  3. 由于firefox下有firebug这个插件,所以开发的时候都是以ie为准   
  4. 稍微在ie下做些测试,一般都没有问题。   
  5.   
  6. 这次被一个逗号搞得非常辛苦。   
  7.   
  8. var send_email_callback =    
  9. {    
  10.     success:handleSuccess,    
  11.     failure:handleFailure,    
  12. };    
  13. 这段代码在firefox和ie下都不会报错   
  14. firefox运行正常,ie下导致整个脚本失效   
  15.   
  16. 调试都是用alert来调试,但是ie下alert的功能也失效了,无论alert放在文件的那个位置,都不会有弹框出来   
  17. 整个js文件代码长达300行,找的好辛苦。。。   
  18. 正确的应为: var send_email_callback =    
  19. {    
  20.     success:handleSuccess,    
  21.     failure:handleFailure    
  22. }; 唉,一个逗号引发的辛苦啊。。   
  23.   
  24. 这个错误应该是受到php里面array写法的影响   
  25. 经常在定义array时为了给array添加新值方便,一般都是会再加一个逗号。。。   
  26.   
  27. 另外,还有个地方也会导致脚本在ie下失效   
  28. _div_sending.className     = 'mail_sending';   
  29. //_div_sending.class     = 'mail_sending';   
  30. 其中第二行会导致脚本不能运行,也不会报错,同样无论什么地方放一个alert都不会有反应   
  31. 额,以前看一本书上说,给控件加class的值,这样好像会做到多个浏览器兼容。。。faint,或许是我记错了吧。。   
  32. 解决的办法,注释掉,或者用yui自带的添加的class的方法   
  33. 这段代码是几个星期前写的,那个时候还没有看到yui给控件加class的方法   
  34. YAHOO.util.Dom.addClass(_div_sending, 'mail_sending');   
  35. 希望有人可以告诉我,ie下调试js简单的方法   
  36. 额,我的js的水平也太臭了。。。额。。。。  

确实,在"}"前的最后一个","非常害人。在IE下死活会报错,而且FF下面又完全正常。现在我一看报错,就立马检查是否多了这个",",PHP的ARRAY习惯害人啊……总是担心可能会往配置数组里加东西,所以,每行最后都习惯性的加上逗号,现在……不太敢了。

Tags: json, js

听说。。。

本文内容来自网上,听说是真,羡慕一下

 

Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的伯克利版TCP/IP。当时 BBN和DARPA签了巨额合同开发TCP/IP Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI的主要作者之一。

Tags: bsd

jQuery的一些图片库展示效果[3in1]

jQuery lightBox plugin

simple jQuery Gallery

jCarousel Lite

在新的项目里,把商品的图片采用了这三个插件来处理,其中,simple jQueryGallery并不能算是一个插件,但相对还是比较有作用的。主要是在处理lightBox和carousel的兼容上存在了一些复杂度。

因为时间不够充分,所以,并没有改动原来的代码。也因此在实际的HTML代码里多了很多废代码,好在这些JS插件都不算大,加上废代码也没有多少。这些问题就暂时忽略不计了。

附上几张图片。。。

全图:点击下面的小图,在大图片框里会显示大图片,点击左边和右边的箭头,可以使下面的小图框循环滚动。点击大图片框里的图片,会出现lightBox效果

大小: 57.15 K
尺寸: 260 x 312
浏览: 2774 次
点击打开新窗口浏览全图

lightBox效果:大小: 103.13 K
尺寸: 431 x 376
浏览: 2363 次
点击打开新窗口浏览全图

小图片循环效果:大小: 11.52 K
尺寸: 242 x 56
浏览: 2729 次
点击打开新窗口浏览全图

 

[转载]超强大的jquery formValidator

升级记录
2.0
这次又做了一次比较大的调整:增加了FunctionValidator这种校验方式,现在你可以调用外部函数了;调整了内部部分算法;
你打开下载压缩包里的index.html,将会看到全新的演示。
1、增加FunctionValidator校验方式。作用:你可以用外部函数对表单元素进行校验和处理,返回true/false表示校验是否成功;返回字符串表示自定义错误信息,校验失败;如果没有返回值表示处理过程,校验成功。范例代码如下:
$("#sfzh").formValidator({onshow:"请输入15或18位的身份证",onfocus:"输入15或18位的身份证",oncorrect:"输入正确"}).FunctionValidator({fun:isCardID});
fun这个参数给你的函数传递了2个参数(该表单元素的值,表单元素element) 。具体情况,请看API帮助文档
2、当你调用PageIsValid的时候,如果未校验通过,则给onError传递2个参数(第一个校验没通过元素的错误信息,第一个校验没通过元素element)。范例代码如下:
$.formValidator.initConfig({onError:function(msg){alert(msg)}});
3、AjaxValidator校验方式增加一个配置参数buttons(你点提交的按钮(组)jQuery对象)。作用:当你触发了ajax校验,buttons里对应的按钮(组)就会灰掉,一直等待服务器返回数据为止。范例代码如下:
$("#test1").formValidator({...}).InputValidator({...}).AjaxValidator({
      url : "Default.aspx",
      datatype : "json",
      success : function(data){...},
      buttons: $("#button_id"),
      error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
      onerror : "该用户名不可用,请更换用户名重新",
      onwait : "正在对用户名进行合法性校验,请稍候..."
});
4、由于增加了自定义错误信息的功能,为了跟FunctionValidator校验方式里"fun"函数返回意义统一,更改了formValidator里的onvalid参数返回的意义,给大家带来不便请谅解。返回true/false表示校验是否成功;返回字符串表示自定义错误信息,校验失败;如果没有返回值表示处理过程,校验成功。

» 阅读全文

Tags: jquery, javascript, form, validator

为ThinkPHP开发自定义标签几个注意事顶

ThinkPHP的模版引擎强大就强大在于它可以使用XML标签来为TP模版引擎进行扩展,因此TP的标签功能就成了TP模版的亮点所在。要想让TP的模版功能更加强大,你就得学会扩展TP的标签功能,即:自定义标签

开发自定义标签功能的时候,有几个注意的地方,
1、文件名的规范性,这个当然是不用多解释了,TagLibInput.class.php
    (TagLib加是你定义的标签名,首字符大写,这样你的文件名中的Input就会自动认为你的XML文件名)
2、目录所在:目前暂时还是存放到THINKPHP的核心类库里,目录为:/THINKPHP/Lib/Think/Template
    主程序文件放到:/THINKPHP/Lib/Think/Template/TagLib/ 目录下
    自定义的XML文件放到:/THINKPHP/Lib/Think/Template/Tags/ 目录下

    (自定义的文件是小写的标签名,即刚才类名中的Input的小写)

注意事顶:
    如果你发现你自定义的标签没有被解析,请按如下方法进行检查(以input标签为例)
    1、查看文件开始的地方是否加载了<tagLib name="cx,html,input" />,同时,请检查是否符合XML规范,如:标签一定要闭合。例:<br />,否则会出现XML解析错误
    2、检查文件是否都为UTF-8编码,因为在解析XML的时候,都是采用UTF8编码,如果不是UTF8编码,会出现一些奇怪的解析错误,很多时候都会出现simpleXml解析器错误,如果出现这种错误,请检查文件编码,如果是UTF8编码的文件,请同时检查文件头是否存在BOM标记。
    3、自定义的标签中,是否忘了双引号。由于在写HTML的时候,很容易忽略双引号,比如<input type=text name=name>,如果是这样,在被当成XML解析的时候,肯定会报错的,正确的写法应该是:<input type="text" name="name" value="value" />(标签要闭合),如果是自己自定义的标签,则应该这样写:<input:text name="" value="" />

Tags: thinkphp, 标签