时间:2021-05-28
现在用脚本控制html元素样式的方法真的很多很多。
对单个元素可以直接element.style.display=......修改一个样式,也可以element.className=...修改它的多个样式。
对于多个元素修改样式可以用脚本直接importcss文件。
目前项目中有这么一个需求。要求改变某div下所有子孙结点的样式,但不改变div本身样式。
我当时想都没有想就留下了一下代码:
复制代码 代码如下:
<style>
span{background-color:blue;}
input{background-color:gray}
button{margin-top:70px;width:50px}
</style>
<!--byGo_Rush(阿舜)fromhttp://ashun.cnblogs.com/--->
<divid="a1">
divdiv
<span>
spanspan
<h2>ttttt</h2>
</span>
<input>
</div>
<buttononclick='document.styleSheets[0].addRule("#a1*","background-color:red")'>转</button>
这段代码一直工作得很好,直到有一天我同事告诉我,我的模块让他的浏览器崩溃了。
我打着手电筒,拿着放大镜在近两千多行的代码中找了又找。.
根本找不到问题出在哪里,而且当时对于上面的代码丝毫没有怀疑过。
我们div的id是从数据库里面直接读取的,为数字类型,比如<divid="345"></div>等等。
对于id能取什么字符,我以前在ie6和ff1.5中测试过,
复制代码 代码如下:
<divid="阿舜"></div>
<divid="???"></div>
<divid="-1"></div>
这样的id设置,都可以用
document.getElementById("阿舜")
document.getElementById("???"),
document.getElementById("-1"),
读出来不会有问题,更何况是纯数字呢.
最后经过反复调试,找到这个罪魁祸首addRule.
document.styleSheets[0].addRule("#a1*","background-color:red")
document.styleSheets[0].addRule("#123*","background-color:red")
都没有任何问题
下面这行代码却会让ie死掉.内存和虚拟内存一直暴涨,我512的内存,一下子xp就提示虚拟内存不够。
document.styleSheets[0].addRule("#-1*","background-color:red");
同样,在ff1.5中,将导致函数出错,但不会崩溃。
总结:
1。ie,ff对id的取值相当宽容,id几乎可以是任何字符,中文,英文,字母,数字,负数,特殊字符
2。但是addRule函数中,id为负数时,在ie和ff都会失败,而且ie会崩溃。
附:
addRule在ff中的兼容写法
复制代码 代码如下:
<style>
span{}{background-color:blue;}
input{}{background-color:gray}
button{}{margin-top:70px;width:50px}
</style>
<!--byGo_Rush(阿舜)fromhttp://ashun.cnblogs.com/--->
<divid="a1">
divdiv
<span>
spanspan
<h2>ttttt</h2>
</span>
<input>
</div>
<script>
functionf(){
varrule="#a1*{background-color:red}";
varindex=document.styleSheets[0].cssRules.length;
document.styleSheets[0].insertRule(rule,index);
}
</script>
<buttononclick=f()>转</button>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1.window.event兼容脚本2.屏蔽Form提交事件3.获取事件源4.添加事件兼容写法5.Firefox注册innerText写法6.长度7.父控件下的
1.event.srcElement复制代码代码如下://srcElement只能在IE下使用target是FireFox使用的,下面是兼容性写法varobj=
**兼容IE,Firefox遵循W3C标准写法的图片无缝滚动代码(支持左移/右移功能)(本示例为上下两行图片进行双行滚动)**实现思路:一个设定宽度并且隐藏超出
CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和Firefox存在很大的解析差异,这里介绍一下兼容要点。 常见兼容问题: 1.DOCTYPE影响CS
本文介绍了详解js几个绕不开的事件兼容写法,分享给大家,具体如下:1、键盘事件keyCode兼容性写法varinp=document.getElementByI