大家好,又见面了,我是你们的朋友全栈君。
平常编写代码,更改一个元素样式的时候,自己都是用
obj.style.width = "200px";
obj.style.position = "absolute";
obj.style.left = "100px";
之类的代码进行设置,这样的话如果更改样式很多的时候,就要写很多代码,难道不能像Jquery那样使用$(obj).css(……);这样进行设置么?
于是自己搜了下使用Javascript批量修改样式的方法。于是看到这篇文章,原来是有一个 cssText 属性的,看来自己的基础知识掌握的还并不充分呐
在w3school中查询了下用法
它是一组样式属性及其值的文本表示。这个文本格式化为一个 CSS 样式表,去掉了包围属性和值的元素选择器的花括号。
将这一属性设置为非法的值将会抛出一个代码为 SYNTAX_ERR 的 DOMException 异常。当 CSS2Properties 对象是只读的时候,试图设置这一属性将会抛出一个代码为 NO_MODIFICATION_ALLOWED_ERR 的DOMException 异常。
cssText 的使用
obj.cssText = " width:200px;position:absolute;left:100px;";
正如那篇文章所提cssText会清除之前元素含有的样式,所以得使用
obj.cssText += " width:200px;position:absolute;left:100px;";
但是在IE中的最后一个分号会被删除
obj.cssText += " ;width:200px;position:absolute;left:100px;"; //这样便能解决在IE中出现的问题了
可这样代码也显得有些麻烦(起码在我自己看来),于是又找了找其他方法
//使用JSON
function setStyle(obj,json){
for(var i in json)
{
obj.style[i]=json[i];
}
}
使用的时候直接
setStyle(obj,{
width : '200px'; position : 'absolute'; left : '100px';});
自我感觉这样方法倒是挺不错
非原创,只是怕自己看到的东西忘记了,存在这里,随时查看 :),笔记嘛,哈哈
原文:http://rguanghui.sinaapp.com/2013/02/26/javascript_study_note_csstext/
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159230.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...