付出总有回报

时间:2010年07月28日作者:simaopig评论次数:22

这几天晚上回到家里没闲着,在网上找了本书,终于弄明白自己一直半懂且不懂装懂的一件事情。

那就是闭包与作用域的事情,想想前两天写的日志,虽然当时自己用另外一种方式处理了。即借用于中间函数,不过始终是脱离了自己原来预想的闭包实现法。既然偶有所感,不如改写一下。

改写后,代码如下,果然精悍了很多。

var payTypes = ['snda', 'junnet', 'szx'];

for (var i = 0, len = payTypes.length; i < len; i++) {
    (function(payTypeName){
        var Radios = document.getElementsByName(payTypeName + "_amount");
        for (var j = 0, rLen = Radios.length; j < rLen; j++) {
            Radios[j].onclick = function(){
                payObj.changePaytype('pay_' + payTypeName, this.value);
            }
        }
    })(payTypes[i]);
}

所以说,天道酬勤,付出总是会有回报的。能否写出这个代码并不重要,背下来也可。但是弄明白其真正原理,这才是我最大的收获。

有点装B了,但是人在世上混,哪能不流氓,哪能不装B?都在世上飘,难免会挨刀。

声明: 本文采用 BY-NC-SA 协议进行授权 | 小小子
转载请注明转自《付出总有回报

标签:,分类:JavaScript
22条评论
  1. 阿邙留言于:2010年07月29日03:59

    我顿时成为盲人 :sad:

    [回复]

  2. 久酷留言于:2010年07月29日08:35

    只要有B 别人是不知道是真有还是装出来的,哈哈

    [回复]

  3. 要饭的留言于:2010年07月29日09:19

    哎,看着这些我就头疼

    [回复]

  4. simaopig留言于:2010年07月29日14:20

    @要饭的
    其实我看着也头疼,这玩意总盯着,总想着,是会晕菜的。

    [回复]

  5. simaopig留言于:2010年07月29日14:23

    @阿邙
    和你的名字对应了嘛。呵。

    [回复]

  6. simaopig留言于:2010年07月29日14:24

    @久酷
    呵呵,说的好,只要有B别人是不知道咋来的。哈哈哈。 :lol:

    [回复]

  7. 小王子留言于:2010年07月29日14:48

    技术流。

    [回复]

  8. 灰太狼留言于:2010年07月30日15:41

    哎。。我的付出。也不知道什么时候 才会有回报啊。 !哎。痛苦。

    [回复]

  9. 老饕留言于:2010年08月04日19:33

    最近再看古惑仔~~你懂的

    [回复]

  10. newcoin留言于:2010年08月09日23:59

    技术牛人啊

    [回复]

  11. 小粥留言于:2010年08月17日10:30

    七夕过的好嘛~~ 我上图了!

    [回复]

  12. simaopig留言于:2010年08月17日10:31

    @小粥
    呵呵,很温暖,很Happy。我过去看图。哈。

    [回复]

  13. wclssdn留言于:2010年08月27日21:30

    内个- – . 讲讲什么意思呀… 光列个代码- – 不懂ing………..

    [回复]

  14. simaopig留言于:2010年08月29日19:19

    @wclssdn
    呵呵,文中有体现的哦,只是说我用下面这段代码,来解决了前几天遇到的问题。呵~~

    [回复]

  15. wclssdn留言于:2010年09月01日15:43

    不懂ing… 记得内天我也写了一小段程序.. 想用JS判断指定区域内的图片是否失效了.. 如果失效了. 累加失效图片个数..
    貌似我这么写的..
    var all = $(“#content img”).length;
    var error = 0;
    $(“#content img”).each(function(){
    $(this).error(function(){

    });
    });

    [回复]

  16. wclssdn留言于:2010年09月01日15:45

    汗- – . 我还没写完呢- – . 怎么就提交了呢- – .
    继续..

    不懂ing… 记得内天我也写了一小段程序.. 想用JS判断指定区域内的图片是否失效了.. 如果失效了. 累加失效图片个数..
    貌似我这么写的..

    var all = $("#content img").length;
    var error = 0;
    $("#content img").each(function(){
      $(this).error(function(){
        ++error;
        alert(error);  //每次弹出error+1
     });
    });
    alert(error);  //此处error=0

    貌似就是有闭包的问题在里边吧? 可惜我不懂闭包.. 如果有空. 还请赐教… 谢啦“

    [回复]

  17. simaopig留言于:2010年09月01日16:15

    @wclssdn
    不太了解jQ的each和error方法,我怀疑是error方法里面的处理过程不一致导致的。

    稍候,我给你发邮件,把我写的demo,发给你一份。。嗯。

    [回复]

  18. simaopig留言于:2010年09月01日16:25

    @wclssdn
    已经给你发邮件了,请查收,希望我的解释你可以看懂。写的比较乱,呵呵。

    自己多试几次,你就会发现,error是异步调用,或者是延迟调用?总之他发生的情况是需要去检测这些代码有没有问题,有问题才会触发函数,因为each是callback的error事件。

    所以,其更改error值时,外面的已经先调用完了,注意alert的顺序,方法外的alert是先发出的。

    所以,你用setTimeout去试一下,就会发现,你这个不涉及到闭包,error确实是被更改了的。嗯。

    [回复]

  19. wclssdn留言于:2010年09月07日13:28

    ;-) error 被更改了? 如果用 setTimeout(function(){
    alert(error);
    },5000);

    也就是说.. 当所有图片都加载完毕后.. error的值不是0了?

    因为each是callback的error事件。 这句还是很迷糊- – ..

    不过. 谢谢啦. 哈哈“`

    [回复]

  20. wclssdn留言于:2010年09月07日13:32

    呵呵 :| 刚刚又仔细的看了下你发的邮件… 应该算是理解了一点“`

    貌似是 图片没加载完.. js是不会调用error 这个函数的是吧..

    而我在没有加载完图片的时候. 就用了error 所以它没被更改. 所以还是0 . …

    唉.. 我太菜咧- – … 哈哈哈“ 再次谢过.“`

    [回复]

发表评论

*

*