这些年遇到的js的坑

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

(1)声明js函数(js方法)时报错
这些年遇到的js的坑
 原因是:缺少function关键字.

正确的应该是:

Js代码  这些年遇到的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的坑
 

Js代码  这些年遇到的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代码  这些年遇到的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

详细错误信息:
这些年遇到的js的坑
 有问题的代码:
这些年遇到的js的坑
 
根本原因是:页面没有加载完,所以document.getElementsByName("user.username")得到的是nullundefined

 

 

正确的代码:
这些年遇到的js的坑
 注意:红框中的内容是我增加的.

 

 

 

(5)斜杠导致报错
这些年遇到的js的坑
 原因是:\u   ,\upload中

 

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

例如

Html代码  这些年遇到的js的坑
  1. <a href="javascript: disAbleA(this)" style="color:#fff;">上一页</a>  

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

 

(7)对象中多了一个逗号
这些年遇到的js的坑
 最后一个逗号应该去掉,当然不去掉有的浏览器也不报错.

 

(8)为什么js始终不执行呢?
这些年遇到的js的坑
 原因:因为javascript指定了src属性,所以不会执行,应该把src属性去掉

 

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