这些年遇到的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")得到的是null或undefined

 

 

正确的代码:

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

 

 

 

(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

 

时间: 2024-09-17 04:22:13

这些年遇到的js的坑的相关文章

一道常被人轻视的web前端常见面试题(JS)_javascript技巧

面试题是招聘公司和开发者都非常关心的话题,公司希望通过它了解开发者的真实水平和细节处理能力,而开发者希望能够最大程度地展示自己的水平(甚至超常发挥).本文提供了众多前端开发面试题,无论是招聘方还是应聘方都值得一看! 前言 年前刚刚离职了,分享下我曾经出过的一道面试题,此题是我出的一套前端面试题中的最后一题,用来考核面试者的JavaScript的综合能力,很可惜到目前为止的将近两年中,几乎没有人能够完全答对,并非多难只是因为大多面试者过于轻视他. 题目如下: function Foo() { ge

很容易被忘记的前端JS面试题

此题是综合之前的开发经验以及遇到的JS各种坑汇集而成.此题涉及的知识点众多,包括变量定义提升.this指针指向.运算符优先级.原型.继承.全局变量污染.对象属性及原型属性优先级等等. 用来考核面试者的 JavaScript的综合能力 /**  * 一道常被人轻视的前端JS面试题  *  * 此题是综合之前的开发经验以及遇到的JS各种坑汇集而成.此题涉及的知识点众多,包括变量定义提升.this指针指向.运算符优先级.原型.继承.全局变量污染.对象属性及原型属性优先级等等.  * 用来考核面试者的

极易被忽视的javascript面试题七问七答_javascript技巧

此题是我出的一套前端面试题中的最后一题,用来考核面试者的JavaScript的综合能力,很可惜到目前为止的将近两年中,几乎没有人能够完全答对,并非多难只是因为大多面试者过于轻视他. 题目如下: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () { alert (2);}; Foo.prototype.getName = function () { aler

[js]uploadify结合jqueryUI弹出框上传,js中的冒出的bug,又被ie坑了

引言 最近在一个项目中,在用户列表中需要对给没有签名样本的个别用户上传签名的样本,就想到博客园中上传图片使用弹出框方式,博客园具体怎么实现的不知道,只是如果自己来弄,想到两个插件的结合使用,在弹出框中使用uploadify插件进行上传,每次都会报错很是无语,最后找到解决方案,这里记录一下,算是对工作中遇到的bug的一个总结. bug 这是vs调试状态下,显示的信息.在浏览器端,点击第一次上传按钮,正常,将弹出框关闭后,第二次打开,就会出现问题: 第一次单击上传: 第二次,关闭弹出框,再次单击上传

JS 追加数组采用 push.apply 的坑

JS数组追加数组没有现成的函数,这么多年我已经习惯了a.push.apply(a, b);这种自以为很酷的,不需要写for循环的写法,一直也没遇到什么问题,直到今天我要append的b是个很大的数组时才遇到了坑. a = new Array(); b = new Array(125624); a.push.apply(a, b); 以上的代码在mac的chrome下抛出了如下的异常 Uncaught RangeError: Maximum call stack size exceeded 如果把

rails torial 中css/js引用的版本坑

版本坑 !  stylesheet_link_tag :all 和js  在rails4.2 中已经统一成 <%= stylesheet_link_tag "application", :media => "all" %> <%= javascript_include_tag "application" %>

开始挖掘js与dojo可能踩的坑

&& 与 || 操作符 如果&&左侧表达式的值为真值,则返回右侧表达式的值:否则返回左侧表达式的值. 如果||左侧表达式的值为真值,则返回左侧表达式的值:否则返回右侧表达式的值. 所以不要天真地以为他们始终返回boolean "abc" && "123" // "123" "" && "123" // ""2. 上一个坑看起

利用YUI Compressor对JS、CSS文件进行压缩

YUI Compressor简介 JS/CSS文件压缩工具,压缩原因以及作用自行脑补,更多介绍可查看 http://yui.github.io/yuicompressor/ 下载地址 地址:https://github.com/yui/yuicompressor 如何使用 首先要确保安装了JDK,关于JDK的安装,可参考http://www.cnblogs.com/chyingp/archive/2013/04/09/jdk.html 下面拿个简单的例子做演示(macx控制台下操作,window

详解 Weex JS Framework 的编译过程

之前写了一篇文章<Weex 框架中 JS Framework 的结构>概述了 JS Framework 的整体结构,其中编译过程写的有些简略,这里再详细介绍一下. 一句话概括 JS Framework 的编译过程就是: 将 JS Bundle 转换成 Virtual DOM 发送到原生模块渲染. 这个过程涉及三种数据类型:JS Bundle .Virtual DOM .Vm . JS Bundle 是由 .we 文件转换过来的,会被视为代码而执行. Virtual DOM 是描述页面结构的 J