首页 新闻 会员 周边 捐助

js提取到js文件夹里

0
悬赏园豆:10 [待解决问题]

以前都是用jquery,现在想用原生js,但是发现如果将js写在.js文件里,如果获取了某个元素并执行了click事件,但是别的页面也引用了这个.js,但是他没有那个元素,所以会报错,不知道该怎么弄,(不想将js写在页面里)

苍之狼的主页 苍之狼 | 初学一级 | 园豆:136
提问于:2016-04-15 11:04
< >
分享
所有回答(4)
0

沒什麼好困擾的,要嘛寫判斷,要嘛分開寫

RosonJ | 园豆:4910 (老鸟四级) | 2016-04-15 11:23
0

通用性js开发,考虑的问题当然多了,一些必要的逻辑判断是需要的。

所以开发通用性js文件,要尽量的抽象化,减少可能涉及到具体的东西.

例如:

     var $ = (function(){
         function EM(){
             this.click = function(el_query, handle , cb ){
                 var el = document.querySelector(el_query);
                 if(el ){
                     el.addEventListener( 'click',handle, false );
                     return;
                 }

                cb(new Error('element not exist.'));

             }
         }

         var EVJS = new EM;

         return {
             onclick:(el_query , handle  ,cb ){
                 EVJS.click( el_query , handle , cb);
             }
         }
     })();
   
   $.onclick('#input' , function(){} , function(err){
         if(err){
             console.log(err);
         }
   })

 

visonme | 园豆:1674 (小虾三级) | 2016-04-15 16:29
0

参数,参数,参数!!!不是共同的地方,用参数!!!!

幻天芒 | 园豆:37207 (高人七级) | 2016-04-15 21:27
0

 

如果从软件工程的角度来回答这个问题的话,那就是你的代码架构不合理,设计得不好。不是针对这个页面写的代码为什么要让这个页面引用呢?那你可能说这个文件里面有部分代码是各页面共用的,那么共用的和专用的要分开为不同文件,不要混在一起,代码设计的时候就要构思好的。

 

如果要就事论事,只讨论怎将就这个问题,那也很简单,你要给一个页面元素绑定事件,或者说对他执行某个动作之前,要先判断他存不存在,不存在就不执行,这样就不会因为页面元素不存在而报错了。

比如:

var div = document.getElementById(...);

if (div) {

  div.onclick = function () {

    ......

  };

}

 

又如:

function doSomething(elem) {

  if  (!elem) return;

  ......  

}

 

脚本王子 | 园豆:779 (小虾三级) | 2016-04-16 14:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册