这些年遇到的js的坑-阿里云开发者社区

开发者社区> 开发与运维> 正文

这些年遇到的js的坑

简介:

总结一些这些年遇到的JavaScript的坑,当然也是自己学艺不精.现总结如下

(1)声明js函数(js方法)时报错

 原因是:缺少function关键字.

正确的应该是:

Js代码  收藏代码
  1. com.whuang.hsj.getCustomAttr=function(htmlNode22,attr)  
  2. {  
  3.     var hospitalId=htmlNode22[attr];  
  4.     if(hospitalId==undefined||hospitalId==null){  
  5.         hospitalId=htmlNode22.getAttribute(attr);  
  6.     }  
  7.     return hospitalId;  
  8. }  

 

 

 

(2)浏览器报错缺少分号

 

Js代码  收藏代码
  1. var isHasObj = eval('(' + obj + ')');  
  2.             int errorType=isHasObj.errorType;//见常量类  
  3.             if (isHasObj.success) {  
  4.                 jInfo("亲,工作辛苦了!""签到成功"null);  
  5.             }else{  
  6.                 if(errorType==1){  
  7.                     jAlert("主人,邮箱记错了吧!""签到失败"null);  
  8.                 }else{  
  9.                     jAlert("额,主公不给力啊!""签到失败"null);  
  10.                 }  
  11.                   
  12.             }  

 

根本原因:javascript中使用int

 

解决方法:

 

int改为var

(3)js报错 Out of memory at line xxx

原因:函数同名,参数列表不同;js中没有重载,下面的函数会覆盖上面的函数,导致函数调用自身,产生了无限循环.

修复方法:在其中一个函数名后加2,使两个函数的函数名不同。

Js代码  收藏代码
  1. com.whuang.hsj.isSel4CheckboxbySequence=function(prefixStr,countMin,countMax){  
  2.     var initBool=false;  
  3.     for(var ik=countMin;ik<=countMax;ik++){  
  4.         var checkbox227=com.whuang.hsj.$$arr(prefixStr+ik);  
  5.         if(checkbox227==null||checkbox227==undefined){  
  6.               
  7.         }else{  
  8.             if(com.whuang.hsj.isCheckcheckbox(checkbox227)){  
  9.                 initBool=true;  
  10.             checkbox227=null;//free memory  
  11.                 break;  
  12.             }  
  13.         }  
  14.     }  
  15.     return initBool;  
  16. };  
  17. /** 
  18.  * example:input type="checkbox" name="id_selected_1" 
  19.  * @param {Object} prefixStr 
  20.  * @param {Object} countMax 
  21.  * function name must use diffrent name !!! 
  22.  */  
  23. com.whuang.hsj.isSel4CheckboxbySequence2 = function(prefixStr, countMax){  
  24.     return com.whuang.hsj.isSel4CheckboxbySequence(prefixStr,1,countMax);  
  25. };  

 

 

(4)TypeError: document.getElementsByName(...)[0] is undefined

详细错误信息:

 有问题的代码:

 
根本原因是:页面没有加载完,所以document.getElementsByName("user.username")得到的是nullundefined

 

 

正确的代码:

 注意:红框中的内容是我增加的.

 

 

 

(5)斜杠导致报错

 原因是:\u   ,\upload中

 

(6)我们经常在超链接的href中执行javascript代码

例如

Html代码  收藏代码
  1. <a href="javascript: disAbleA(this)" style="color:#fff;">上一页</a>  

 这里的this不是超链接对象,而是window(浏览器全局对象)

 

(7)对象中多了一个逗号

 最后一个逗号应该去掉,当然不去掉有的浏览器也不报错.

 

(8)为什么js始终不执行呢?

 原因:因为javascript指定了src属性,所以不会执行,应该把src属性去掉

 

参考:http://www.tuicool.com/wx/jyee2mf

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章