Category Archives: Hello World

Hello World

javascript,少写“var”造成的面向对象的bug

下面这段代码,如果按照纯面向对象习惯的理解,当点击test按钮时,应该会alert一个“pp11”,和一个“pp22”,然而,实际情况时,会连续alert两个“pp22”~~

$(document).ready(function(){
  var t1 = new TST('pp11');
  var t2 = new TST('pp22');
});
//类
function TST(pars){
  this.p1 = pars;
  this_ = this;
  $('button.test').click(function(){
    alert(this_.p1);
  });
}

出现这种情况的原因,我想应该是出在this的中间变量“this_”上:创建t1,t2对象时,test按钮被绑定了两次click事件,传入的参数都是this_,但创建t2时的this_覆盖了t1的this_,所以,再点击按钮时,实际传入的是两个t2

var this_ = this;

上面的一个小小的改动,证实了我的猜测:this_前面加了var以后,this_便不会相互覆盖,程序正常了!

Hello World

jquery bind/unbind的使用

使用jquery的bind方法可以为一个对象的一个事件绑定绑定多个处理函数,甚至可以多次绑定一个方法,比如:

$(xxx).bind(‘click’, fun1).bind(‘click’, fun2).bind(‘click’, fun1);

而unbind用于删除绑定的方法,比如$(xxx).unbind(‘click’)

……

但是,如果只想删除fun2哪?以前看得很多jquery里都没有关于这种操作的介绍,所以自然就一直以为只能整个的将click处理调,今天试了另外一种操作:$(xxx).unbind(‘click’, fun2),可以解除fun2的绑定

住:$(xxx).unbind(‘click’, fun1),会将之前注册的两次fun1全部删除掉

---------------------

补充:

在jQuery下使用 $(selector).unbind(‘hover’)无效,可以使用如下方法代替:
$(selector).unbind(‘mouseenter’).unbind(‘mouseleave’);
或:
$(selector).unbind(‘mouseenter mouseleave’);

可以发现hover事件是由mouseenter和mouseleave组成,以区别mouseover和mouseout。
在unbind它的这两个事件后,不会对mouseover和mouseout事件造成影响。

Hello World 他山石

javascript 刷新页面的方法

1. window.location.reload

<script language=”JavaScript”>
function myrefresh(){
window.location.reload();
}
setTimeout(‘myrefresh()’,1000); //指定1秒刷新一次
</script>

2. 刷新包含该框架的页面用
<script language=JavaScript>
parent.location.reload();
</script>

3. 子窗口刷新父窗口
<script language=JavaScript>
self.opener.location.reload();
</script>
( 或 <a href=”javascript:opener.location.reload()”>刷新</a>   )

4.  刷新另一个框架的页面用
<script language=JavaScript>
parent.otherFrameID.location.reload();
</script>

5. 使用meta,自动定时刷新
<meta http-equiv=”refresh” content=”20″>
其中20指每隔20秒刷新一次页面.

参考:http://www.cnblogs.com/lmjob/archive/2008/08/11/1265164.html

Hello World

php使用正则抠文字

比如有邮件模板:

当当网已收到您于${time}提交的订单${orderId},我们会在收到您的${amount}元的货款后及时处理订单,预计1-2天从${location}发货。

现在需要提取出其中的占位符来做下一步的处理,可以首先使用“/\\$\{\w+\}/”抠出占位符“${xxx}”,然后使用“/\w+/”抠出占位符内的支付,这两步,都需要使用preg_match_all方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function get_placeholder($str){
  $reg1 = "/\\$\{\w+\}/";
  $out1 = array();
  $r1 = preg_match_all($reg1, $str, $out1, PREG_PATTERN_ORDER);
  if($r1 &gt; 0){
    $reg2 = "/\w+/";
    $rArr = array();
    foreach($out1[0] as $o){
      $out2 = array();
      $r2 = preg_match_all($reg2, $o, $out2, PREG_PATTERN_ORDER);
      if($r2 &gt; 0){
        array_push($rArr, $out2[0][0]);
      }
    }
    if(count($rArr) &gt; 0){
      return $rArr;
    }
  }
  return false;
}

将上面的邮件模板放进去,便可以返回:array(‘time’, ‘orderId’, ‘amount’, ‘location’)

Hello World

cakephp取referer

再Controller内:

$this->referer()

比如:$this->redirect($this->referer());

Hello World

MAMP安装mongo

下载osx-php5.3-1.0.11.zip,将得到的mongo.so放在下面路径下:

然后在对应的厄php.ini中添加:extension=mongo.so

end

Hello World

常用正则表达式搜集

中文字符:[\u4e00-\u9fa5]
双字节字符(包括汉字在内):[^\x00-\xff]
空白行:\n\s*\r
HTML标记:<(\S*?)[^>]*>.*?</\1>|<.*? /> --不完美,但基本够用
Email:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL:[a-zA-z]+://[^\s]*
字母开头,允许5-16字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
国内电话:\d{3}-\d{8}|\d{4}-\d{7}
QQ号:[1-9][0-9]{4,}
中国邮政编码:[1-9]\d{5}(?!\d)
身份证:\d{15}|\d{18}
匹配ip地址:\d+\.\d+\.\d+\.\d+ --不完全匹配
特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
Hello World

php的四种取整方法

php中有四中常用的取整方法:ceil,floor,round,intval

ceil,进一法

ceil(4.3);                   // 5
ceil(9.999);              // 10

floor,舍去法

floor(4.3);              // 4
floor(9.999);         // 9

round,四舍五入

round(3.4);                 // 3
round(3.5);                  // 4
round(3.6);                  // 4
round(3.6, 0);              // 4
round(1.95583, 2);     // 1.96
round(1241757, -3);   // 1242000
round(5.045, 2);          // 5.05
round(5.055, 2);          // 5.06

intval,对变数转成整数型态

intval(4.3);      //4
intval(4.6);      // 4

Hello World 业界杂谈 日志

上帝之手

刚开始做程序员的时候,眼看着一行行代码编程变成功能,经常觉得自己是在创造一个世界,自己是上帝~~这时还都是做后台,按要求做个功能,具体做成什么样子基本上都是自己定~~最大的经验时:一个系统,就如同一间房子,用户进了门以后,在里面要能顺顺利利的做各种事情,然后还要能顺顺利利的出来~~面对一条错误数据引起系统彻底不能用的问题,我经常给同事打比方说:上帝打了一个喷嚏,结果世界崩溃了

后来,随着技术水平的逐渐提高,开始做前台的东西:有产品人员设计具体产品,自己只是把这个产品做出来~~这时才发觉:做产品的才是上帝,程序员不过是给他们打工的建筑工人,能够自己发挥的余地很小。。。最郁闷的是“上帝”总是把握不准/或者“上帝”的老板不满意,产品设计总是变来变去,而程序员面对这些变化,大部分时候只能唯命是从

今天开了整整一天的会:所谓“产品冲刺计划会”,估计明天/后天还要持续。最有意思的是这个会的前半部分:产品人员要把自己的产品详详细细的给大家讲清楚~~然后大家开始发问,可能是关于每一个细节的问题:一个链接/一个按钮/甚至一个文字……然后产品人员自己才发觉:呀,这里没考虑/哦,这是个问题……挺好,集体会诊

这时,我突然想:当初上帝决定要创造世界的时候,是不是也开了这种会:为什么要有人?为什么人要分男女?……为什么π是3.14?为什么…….上帝统统回答:因为老子是上帝!哈哈

Hello World

javascript对象如何删除属性和方法

通过下面的代码,可以给user对象添加/修改属性和方法

user.name=”tom”;
user.alert=function(){
alert(“hello,”+this.name);
}

如果要删除,只需将其设为undefined:

user.name=undefined;
user.alert=undefined;

---------自由的js