感觉很久没有写 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.οnlοad=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