这些年遇到的js的坑
总结一些这些年遇到的javascript的坑,当然也是自己学艺不精.现总结如下
(1)声明js函数(js方法)时报错
?原因是:缺少function关键字.
正确的应该是:
com.whuang.hsj.getCustomAttr=function(htmlNode22,attr) { var hospitalId=htmlNode22[attr]; if(hospitalId==undefined||hospitalId==null){ hospitalId=htmlNode22.getAttribute(attr); } return hospitalId; }
?
?
?
(2)浏览器报错缺少分号
?
var isHasObj = eval(‘(‘ + obj + ‘)‘); int errorType=isHasObj.errorType;//见常量类 if (isHasObj.success) { jInfo("亲,工作辛苦了!", "签到成功", null); }else{ if(errorType==1){ jAlert("主人,邮箱记错了吧!", "签到失败", null); }else{ jAlert("额,主公不给力啊!", "签到失败", null); } }
?
根本原因:javascript中使用int
?
解决方法:
?
把int改为var
(3)js报错 Out of memory at line xxx
原因:函数同名,参数列表不同;js中没有重载,下面的函数会覆盖上面的函数,导致函数调用自身,产生了无限循环.
修复方法:在其中一个函数名后加2,使两个函数的函数名不同。
com.whuang.hsj.isSel4CheckboxbySequence=function(prefixStr,countMin,countMax){ var initBool=false; for(var ik=countMin;ik<=countMax;ik++){ var checkbox227=com.whuang.hsj.$$arr(prefixStr+ik); if(checkbox227==null||checkbox227==undefined){ }else{ if(com.whuang.hsj.isCheckcheckbox(checkbox227)){ initBool=true; checkbox227=null;//free memory break; } } } return initBool; }; /** * example:input type="checkbox" name="id_selected_1" * @param {Object} prefixStr * @param {Object} countMax * function name must use diffrent name !!! */ com.whuang.hsj.isSel4CheckboxbySequence2 = function(prefixStr, countMax){ return com.whuang.hsj.isSel4CheckboxbySequence(prefixStr,1,countMax); };
?
?
(4)TypeError: document.getElementsByName(...)[0] is undefined
详细错误信息:
?有问题的代码:
?根本原因是:页面没有加载完,所以document.getElementsByName("user.username")得到的是null或undefined
?
?
正确的代码:
?注意:红框中的内容是我增加的.
?
?
?
(5)斜杠导致报错
?原因是:\u ? ,\upload中
?
(6)我们经常在超链接的href中执行javascript代码
例如
<a href="javascript: disAbleA(this)" style="color:#fff;">上一页</a>
?这里的this不是超链接对象,而是window(浏览器全局对象)
?
(7)对象中多了一个逗号
?最后一个逗号应该去掉,当然不去掉有的浏览器也不报错.
?
(8)为什么js始终不执行呢?
?原因:因为javascript指定了src属性,所以不会执行,应该把src属性去掉
?
参考:http://www.tuicool.com/wx/jyee2mf
?
学习笔记见附件
?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。