css里设置了background后,刷新页面select的样式会闪现IE默认的,然后才出现我在js里声明的特效?

问题大概是这样的:我的form表单里,有个select选项,我觉得IE默认的太难看了,于是用js做了一个效果。当然这个form还用了css修饰,如果我的css里不包含background(这个background不是修饰这个form的),那么我刷新页面的时候,我的select效果立即出现。如果css里包含background(同上),那么刷新页面的时候,这个select会先闪现一下IE默认的样式(闪现速度很快),然后才是出现我的js特效。有人知道这是为什么吗?
window.onload = function(e) {
bodyclick = document.getElementsByTagName('body').item(0);
rSelects();
bodyclick.onclick = function(){
for (i=0;i<selects.length;i++){
$('select_info_' + selects[i].name).className = 'tag_select';
$('options_' + selects[i].name).style.display = 'none';
}
}
}
</SCRIPT>

上面是我的js的部分内容(字数有限不能全部贴出来),使用这段js的话,默认的select需要保留。
我这里用了window.onload,可能是要加载完整个页面才开始运行js,所以会闪一下默认的select。有没有方法让它在整个页面加载完之前就运行?图片大的问题已排除。

第1个回答  2013-08-19
可能是因为...你写的js要加载完整个页面才开始运行....所以页面加载过select之后...后面还有一些内容..等这些内容加载完之后js开始, 时间会很短...顺便问下...既然用js模拟了..为什么还要用原版的select..直接用div li之类的标签模拟不是更好吗? 而且还不会又问题...改起来更自由一些追问

感谢您的回答,我的js里面利用var selects = document.getElementsByTagName('select');
for (i=0;i<selects.length;i++){
selects[i].style.display = 'none';
.......

所以原生的select不能删除,请问老师有没有办法让我的js在整个页面加载完之前就运行?

追答

很简单啊...不要用window.onload...直接把js代码写到select后面....加载完就就直接加在js...这样应该就可以了...

本回答被网友采纳
第2个回答  2013-08-19
你的背景图片很大吧

它的加载影响了js 的加载 所以会造成短暂的延迟本回答被提问者采纳
第3个回答  2013-08-19
主要是加载速度的问题导致的,试下把js的加载放到最前面。
第4个回答  2013-08-19
直接隐藏或替换掉原生的select
相似回答