论坛首页 入门技术论坛

用js书写UI组件之js基础知识

浏览 20875 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-12-02   最后修改:2008-12-02

从ymPrompt3 源代码中,发现的一个从DOM树中,选取类似于div之类的标签对象的函数。

在 数组c中寻找节点,如果数组不存在,在Dom树中寻找节点,同时还存放在数组c中。这中方式缩短了节点查询时间。

下面是可读代码:
  
     var d=document; var c=[];
    $=function(id){      
        var cc=c[id];
        var tmp;
        if (cc&&cc.parentNode)    tmp=cc;
        else {
           c[id]=d.getElementById(id);
           tmp=c[id];
        }
        return tmp;
     };
 

其中:c相当于一个缓冲容器。第一次选取的对象,存在这个缓冲容器中,下次寻找时直接从缓冲容器中取出就是了。
如果组件动态的新增删除时,这个函数估计要闯大祸。

  下面是实用代码:
  
 var c=[],$=function(id){var cc=c[id];return cc&&cc.parentNode?cc:c[id]=d.getElementById(id);};


0 请登录后投票
   发表时间:2008-12-02   最后修改:2008-12-02
关于 addEvent :

你下载个 新版本的ymPrompt 看看
已经不是这么写的了

另外 你为什么要选择 这个组件来作为学习的对象呢?
我觉得 这个并不是一个学习的好例子
0 请登录后投票
   发表时间:2008-12-02  
fins 写道
你下载个 新版本的ymPrompt 看看
已经不是这么写的了

另外 你为什么要选择 这个组件来作为学习的对象呢?
我觉得 这个并不是一个学习的好例子

照楼主这样学习法,说不定会把更多的新手带到沟里的.
没有办法,我已经投隐藏了.
0 请登录后投票
   发表时间:2008-12-02  
yunhaifeiwu 写道

下面是可读代码:
  
     var d=document; var c=[];
    $=function(id){      
        var cc=c[id];
        var tmp;
        if (cc&&cc.parentNode)    tmp=cc;
        else {
           c[id]=d.getElementById(id);
           tmp=c[id];
        }
        return tmp;
     };
 



应该是     var d=document; var c={};  (注意, 是花括号)
是对象 不是数组. 
0 请登录后投票
   发表时间:2008-12-02  
fins 写道
关于 addEvent :

你下载个 新版本的ymPrompt 看看
已经不是这么写的了

另外 你为什么要 >选择 这个组件来作为学习的对象呢?
我觉得 这个并不是一个学习的好例子


汗!我觉得这个短小罢了!如果是extjs之类的,那个源代码估计看起来可吃力! 我先把 这个看完后,
自已就封装一个最简单的类似lgihtBox的东东,然后再考虑向lgihtBox的东东里再装lgihtBox的东东,再装其他简单
的封装了的组件。这个目标到达后,如果有必要,再认真找一多数人认为优秀的组件进行揣磨学习,化化改进自已原来的封装方法。
0 请登录后投票
   发表时间:2008-12-02  
fins 写道
yunhaifeiwu 写道

下面是可读代码:
  
     var d=document; var c=[];
    $=function(id){      
        var cc=c[id];
        var tm<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>p;
        if (cc&&cc.parentNode)    tmp=cc;
        else {
           c[id]=d.getElementById(id);
           tmp=c[id];
        }
        return tmp;
     };
 



应该是     var d=document; var c={};  (注意, 是花括号)
是对象 不是数组. 

晕死,3.0的源码的确是数组。当然弄在花括符形式的对象更爽些。
0 请登录后投票
   发表时间:2008-12-02  
achun 写道
fins 写道
你下载个 新版本的ymPrompt 看看
已经不是这么写的了

另外 你为什么要选择这个组件来作为学习的对象呢?
我觉得 这个并不是一个学习的好例子

照楼主这样学习法,说不定会把更多的新手带到沟里的.
没有办法,我已经投隐藏了.


隐就隐吧,如果大家都认为需要隐藏,那么的确存在着问题。至少我的方式,不适合别人采用。

以后,也仅量不发贴子了。

说实在的,软件项目中允许不断重构的方式进行开发软件,可不明白,为什么人学习中不允许
从简到难,循序渐进的方式呢?

人生下来,就先学严密的大学教材,这基本上是可笑的!
0 请登录后投票
   发表时间:2008-12-02  
yunhaifeiwu :
这个组件 ymPrompt  写的不好, 对学习不利.
不能因为短小 你就选择他吧 ? 比他短小的js程序多了去了.

而且我还是建议你 脚踏实地的学一学js的基础知识.
认真的看一看书 然后找一个好一点的 组件学习一下
例如 prototype jquery 之类的. (也很小).


自己不明白的东西 不要自己随便联想 胡乱分析, 要去寻求正确的答案.

例如你前面说
引用
... 这种代码作用,初步估计是为了减少内存泄露之类的吧。

说明:
      1 代码中其事件处理方式中,没有搞得很明白,暂时会用自已的方式处理事件.


你有写这些文章的时间 不如去把这些你没明白的搞明白.


总之, 你现在这种做法 对学习帮助甚微.

(你目前引用的这些例子 和学习笔记 中错误太多了. 我就不一一指出了
有时间的话 你自己好好审视一下吧)






0 请登录后投票
   发表时间:2008-12-02  


我在javaeye等着看牛人们完美永远没有错误的教材!没有错误的探讨!


0 请登录后投票
   发表时间:2008-12-02  
yunhaifeiwu 写道


说实在的,软件项目中允许不断重构的方式进行开发软件,可不明白,为什么人学习中不允许
从简到难,循序渐进的方式呢?

人生下来,就先学严密的大学教材,这基本上是可笑的!



重构是要建立在编译正确的基础上的.

你不能在IDE里都是小红叉叉的时候 说:没事 以后还可以重构.
于是就不去修改那些明显的错误 继续开发吧?

学习只是 从基础开始 是可以的.
但是 基础是有前提的 一定要有一个 "良好的基础".

看不好的书籍 采用不好的学习方法 研究不好的代码 , 有什么益处?
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics