作家
登录

addRule在firefox下的兼容写法

作者: 来源:www.28hudong.com 2013-03-30 03:56:17 阅读 我要评论

现在用脚本控制 html 元素样式的方法真的很多很多。 对单个元素可以直接 element.style.display=......修改一个样式,也可以 element.className=...修改它的多个样式。 对于多个元素修改样式可以用脚本直接 import css文件。 目前项目中有这么一个需求。 要求改变某 div下所有子孙结点的样式,但不改变div本身样式。 我当时想都没有想就留下了一下代码:复制代码 代码如下:<style> span{background-color:blue;} input{background-color:gray} button{margin-top:70px;width:50px} </style> <!-- by Go_Rush(阿舜) from http://ashun.cnblogs.com/ ---> <div id="a1"> divdiv <span> spanspan <h2>ttttt</h2> </span> <input> </div> <button onclick='document.styleSheets[0].addRule("#a1 *","background-color:red")'>转</button>这段代码一直工作得很好,直到有一天我同事告诉我,我的模块让他的浏览器崩溃了。 我打着手电筒,拿着放大镜在近两千多行的代码中找了又找。. 根本找不到问题出在哪里,而且当时对于上面的代码丝毫没有怀疑过。 我们div 的id 是从数据库里面直接读取的,为数字类型,比如 <div id="345"></div>等等。 对于id 能取什么字符,我以前在 ie6和 ff1.5中测试过,复制代码 代码如下:<div id="阿舜"></div> <div id="???"></div> <div id="-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> <!-- by Go_Rush(阿舜) from http://ashun.cnblogs.com/ ---> <div id="a1"> divdiv <span> spanspan <h2>ttttt</h2> </span> <input> </div> <script> function f(){ var rule="#a1 *{background-color:red}"; var index=document.styleSheets[0].cssRules.length; document.styleSheets[0].insertRule(rule, index); } </script> <button onclick=f()>转</button>

  推荐阅读

  一段好玩的JavaScript代码

网页中的图片变动的效果直接粘贴到浏览器地址栏里运行就可以看到效果了 记得先打开个图片多的页面复制代码 代码如下:javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5>>>详细阅读


本文标题:addRule在firefox下的兼容写法

地址:http://www.17bianji.com/kaifa2/JS/31323.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)