javascript 常见错误(失误足迹)

来源:互联网 发布:照片设计软件 编辑:程序博客网 时间:2024/05/21 17:34

感觉很久没有写 js啦

1.错误显示:IE: 缺少";"FireBUG显示missing ; before statement

原因:将关键字(函数)写错啦,晕,function test(){return;}写成了functinion

2.没有JS报错,感觉明明是return false,结果还是当return true执行了.
答案:可能是在return false 前面有一个不报错,但是其实是会出错的语句.如经常用到的.focus语句,我们可能在把当前焦点置于一个单选按钮或多选按钮上了,这实际是会导致内部错误的,有时候IE所报的错误,其实早在前面就已经出现啦

3.jsscrollbar(图片滚动条)点击时无法移动,将另外一种写法完全可替代document.body.scrollTop,document.documentElement.scrollTop取代

4.实现div(style:position:absolutely)浮动广告时,firefox竟然无效,原来数据后面要加 "px";

var div=document.getElementById("div");
 div.style.top=document.documentElement.scrollTop+'px';

5.new Date()对象没办法解析2005-07-18这种日期格式,(参数分开时月份为0-11),

解决:将-替换成/

function dateadd(dd,num)
{
 //可以加上错误处理
 dd=dd.replace("-","/");
 var a = new Date(dd);
 alert(a);
 a = a.valueOf();
 a = a + num * 24 * 60 * 60 * 1000;
 a = new Date(a);
 alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日");
}


window.onload=function()
{
 var str="replace content ,please notice that.";
 //replace(str);
 dateadd("2007-12-31",1);
}

6.原以为看完<professional js>可以对js掌握啦,但这三天的调试样式差不多让我崩溃啦。需求是要在页面上加三个按钮,分别是“页面字体变大”,“页面字体变小”,“还原到默认值”,

第一次的思想是遍历页面所有的tag,然后通过computerStyle(FF)或currentStyle(IE)来获取样式,然后逐个加2px,没有样式的,默认加12px;后来项目经理发现问题啦,原因是有的字体是px,有的字体是em,有的字体是pt,有的字体是%;失败告终;

第二次看了http://joomla.org的设计,直接更改document.body.style.fontSize设置 ,但大部分字体却仍然是不变的,查了一下,原来中国95%的网站都需要重构的原因之一是字体单位都用的是px,而不是国外大型网站用的em或%,导致页面的字体无法放大或缩小。

第三次 思路按joomla那种方式实现,将所有*.css文件中的font-size:的单位全部由px改成em(也应该可以是%),由项目经理成功完成。我仍然是一个失败者。      

7.extjs中的GridPanel打印。由于gridpanel只显示一部分内容,所以打印 时老是只打一点点,找到一个函数

document.body.innerHTML = ext_grid.body.dom.innerHTML;但且第一页只打印标题;后来改成Ext.DomQuery.select("div.x-grid3-header-inner")[0].innerHTML+Ext.DomQuery.select("div.x-grid3-body")[0].innerHTML,没有样式。最后找到第一页只打印标题的样式为:

.x-grid3-scroller{zoom:1;}去掉这个zoom就没有问题啦。还有所有的overflow="hidden"的样式也要去掉。

8.document.getElementById(id),当有两个相同的id时会出现随机一个的情况。、

解决:改成 document.getElementsByName(name).

 

9.location.href=loction.href 失效 ,但widnow.location.reload()可以。

原因:地址栏有#

解决:去掉"#" . location.href=location.href.split("#")[0];

10.Firefox下正常,IE下提示:”缺少标识符、字符串或数字“

这一般出现在类的定义时在最后一个属性或方法后加了逗号,在Firefox是无所谓的,而IE下就会出错。最好用vx.net 2008来调试一下

11.window.close在FF下无效

改成:window.opener=null;window.open("","_self");window.close();

12:IE:对象不支持此属性与方法

原因:.使用了关键字,

如var Lang={'delete':'Delete'};alert(Lang.delete);

没有在变量前面加var,如Ext.onReady(function(){ form=new Ext.formPanel({});});form前面应该加var

网上说的,body后面应该紧跟div,span之类的,不能是文本

16 extjs combo 弹出窗口始终是在位置(0,0).原因是hiddenName与Id冲突了。去掉id属性就可以啦。

以前的版本需要将hideTrigger:false ,参考 http://ddgrow.com/extjs-combobox-ie-bug#more-819

原创粉丝点击