1,去掉数组同名字符:
var str= ['zzz','abc','def','abc','def','cccc','aaaa','zzzz'];
var reg = /\b([^,]+),(?=.*?\b\1\b)/g;alert(str.join(",").replace(reg,""));
var str= 'aaa bbb aaa bbb ddd aaa';var reg = /(\S+)\s(?=.*?\b\1\b)/g;alert(str.replace(reg,""));
2,获取元素当前样式:
ie:element.currentStyle.width;
ff:
window.getComputedStyle(element,null).width;
window.getComputedStyle(element,null).getPropertyValue("position");
3,haslayout:是否根据父元素来布局元素属性
一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组织内容。
true:负责对自己和可能的子孙元素进行尺寸计算和定位
行内&计算定位
zoom:1;
4,阻止元素默认事件、冒泡; 让元素不回传服务器,函数后加return false;即可 ; 让.net中直接执行服务端对应js名方法,return fun();其中加true,false即可。
function stopDefault(e) {
if (e && e.preventDefault){
e.preventDefault();//阻止元素默认事件
e.stopPropagation();//阻止向上冒泡
}
else {
window.event.returnValue = false;//阻止元素默认事件(ie)
window.event.cancelBubble = true;//阻止冒泡
}
//return false;
}
阻止默认事件:ie由于attachEvent有返回值,所有绑定事件里加return false;有效,相当于onclick="javascript:return false;";
chrome等,addEventListener(),无返回值,所以在里面加return false;无效,需要e.preventDefault();
5,CSS expression表达式关于document.documentElement/document.body,ie需在前面加n=计算或其他操作
eval(document.documentElement.scrollTop)+"px";
eval的问题是bug, ie6在分析的时候会进行一定程度的优化,实际上不是必须的, 换成别的也可以,是bug, 这不是正确的用法,
top:expression(n=document.body.scrollTop+'px');这样也是可以的,仅限ie,是ie对于expression的优化有bug,n可以随意换成其他
直接把document.body.scrollTop或者document.documentElement.scrollTop放上去的话会被优化掉.
但是如果在前边加点别的操作, 让ie认不出来它, 就没问题了.
top:expression(_(document.body.scrollTop)+'px');也可以。
expression会在文档css熟悉发生变化的时候重新计算。
6,event/e
if(is ff..)
{
var $E = function(){var c=$E.caller; while(c.caller)c=c.caller; return c.arguments[0]};
__defineGetter__("event", $E);
}
替代
function handle(e)
{
e = e || event;
...
}
7,setTimeout,setInterval
可以用一组队列管理它们触发产生的ID,逐个清理,方式清理不到前一个产生的要执行的动作。
8,window.onresize窗口大小改变触发的事件,
node.padding/margin,各浏览器可取可赋值。
ie6在页面加载完之后改变iframe的属性,iframe中的css样式不会立刻执行,需要刷新才会执行。其他浏览器在属性改变后会立刻重新渲染。
9,html中的file控件,可传大小不限的文件到服务端,只要不卡死,但是不会续传,若用form提交到服务端post不过去,可以检查服务端的post最大限制。post_max_size
10, innerHTML
innerHTML有很多bug的
1.ie6的table不能插入东西(只要插入tbody或thead,是可以插入)2.ie的select不能插入option3.ie的会删除掉字符串前面的空格4.浏览器不会执行script标签5浏览器不会执行在style中插入内容6.使用object,embed的innerhtml会报错
11, 数组 array []
var arr=[1,2,3]; arr.fun=function(){}; arr.ready=function(){};
=> arr.length=3; arr.fun();
12, 获取元素自定义属性
document.getElementById(id).att/document.getElementById(id).getAttribute(att)
属性取值法和dom操作法..ie/ff
13, 时间比较
时间比较大小可以直接比较符号比较,获取当前时间之前/后几天/月/年的实现:
new Date(otherDate.getTime()-days*1000*60*60*24)或
otherDate.setMonth(otherDate.getMonth()-months)
由www.LcKey.com 提供支持