给div动态添加样式
2008-08-29 15:40
302 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>动态应用CSS样式</title>
<script type="text/javascript">
////////////////////////////////////////////////////////////////////////////////全局变量
//命名空间
var lee = {};
////////////////////////////////////////////////////////////////////////////////Css文本解析
/*
* 将CSS文本转成JSON对象
* @return json
*/
lee.cssFormatToJSON = function(cssTxt){
var s = cssTxt.replace(/[ {}]/g, "");
var arr = s.split(";");
var o = {};
for(var i = 0; i < arr.length; i++){
if(arr[i].length > 2){
var arr2 = arr[i].split(':');
o[arr2[0]] = arr2[1].toString();
}
}
return o;
};
lee.cssStyleNameToJsName = function(name){
if(name == "float")
return "cssFloat";
else if(name.indexOf('-') > -1){
var i = name.indexOf('-');
return name.substring(0, i) + name.substr(i+1, 1).toUpperCase() + name.substring(i+2);
}
else
return name;
};
lee.cssTextToJsNameJSON = function(cssTxt){
var s = cssTxt.replace(/[ {}]/g, "");
var arr = s.split(";");
var o = {};
for(var i = 0; i < arr.length; i++){
if(arr[i].length > 2){
var arr2 = arr[i].split(':');
var name = lee.cssStyleNameToJsName(arr2[0]);
o[name] = arr2[1].toString();
}
}
return o;
};
////////////////////////////////////////////////////////////////////////////////垃圾回收
lee.gc = function(d){
var a = d.attributes, i, l, n;
if(a){
l = a.length;
for(i = 0; i < 1; ++i){
n = a[i].name;
if(typeof d
=== 'function'){
d
= null;
}
}
}
a = d.childNodes;
if(a){
l = a.length;
for(i = 0; i < l; ++i){
purge(d.childNodes[i]);
}
}
}
////////////////////////////////////////////////////////////////////////////////Div类
function Div(){
this.div = document.createElement("div");
}
Div.prototype.addStyle = function(cssTxt){
var o = lee.cssTextToJsNameJSON(cssTxt);
for(var n in o)
this.div.style
= o
;
};
Div.prototype.appendParent = function(parent){
this.parent = parent;
this.parent.appendChild(this.div);
};
Div.prototype.removeSelf = function(){
lee.gc(this.div);
this.parent.removeChild(this.div);
};
Div.prototype.addEvent = function(type, func){
//IE浏览器
if(this.div.attachEvent)
this.div.attachEvent("on" + type, func);
//火狐浏览器
else if(this.div.addEventListener)
this.div.addEventListener(type, func, false);
};
</script>
</head>
<body>
<script type="text/javascript">
////////////////////////////////////////////////////////////////////////////////测试代码
var div = new Div();
//目前还不支持类似于{border:solid 1px red;}这样的结构
div.addStyle("{position:absolute;left:200px;top:60px;width:100px;height:100px; backgroundColor:#EFEFEF;border-style:solid;border-color:orange;border-width:2px;}");
div.appendParent(document.body);
div.addEvent('click', function(){div.removeSelf.apply(div,[]);});
</script>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>动态应用CSS样式</title>
<script type="text/javascript">
////////////////////////////////////////////////////////////////////////////////全局变量
//命名空间
var lee = {};
////////////////////////////////////////////////////////////////////////////////Css文本解析
/*
* 将CSS文本转成JSON对象
* @return json
*/
lee.cssFormatToJSON = function(cssTxt){
var s = cssTxt.replace(/[ {}]/g, "");
var arr = s.split(";");
var o = {};
for(var i = 0; i < arr.length; i++){
if(arr[i].length > 2){
var arr2 = arr[i].split(':');
o[arr2[0]] = arr2[1].toString();
}
}
return o;
};
lee.cssStyleNameToJsName = function(name){
if(name == "float")
return "cssFloat";
else if(name.indexOf('-') > -1){
var i = name.indexOf('-');
return name.substring(0, i) + name.substr(i+1, 1).toUpperCase() + name.substring(i+2);
}
else
return name;
};
lee.cssTextToJsNameJSON = function(cssTxt){
var s = cssTxt.replace(/[ {}]/g, "");
var arr = s.split(";");
var o = {};
for(var i = 0; i < arr.length; i++){
if(arr[i].length > 2){
var arr2 = arr[i].split(':');
var name = lee.cssStyleNameToJsName(arr2[0]);
o[name] = arr2[1].toString();
}
}
return o;
};
////////////////////////////////////////////////////////////////////////////////垃圾回收
lee.gc = function(d){
var a = d.attributes, i, l, n;
if(a){
l = a.length;
for(i = 0; i < 1; ++i){
n = a[i].name;
if(typeof d
=== 'function'){
d
= null;
}
}
}
a = d.childNodes;
if(a){
l = a.length;
for(i = 0; i < l; ++i){
purge(d.childNodes[i]);
}
}
}
////////////////////////////////////////////////////////////////////////////////Div类
function Div(){
this.div = document.createElement("div");
}
Div.prototype.addStyle = function(cssTxt){
var o = lee.cssTextToJsNameJSON(cssTxt);
for(var n in o)
this.div.style
= o
;
};
Div.prototype.appendParent = function(parent){
this.parent = parent;
this.parent.appendChild(this.div);
};
Div.prototype.removeSelf = function(){
lee.gc(this.div);
this.parent.removeChild(this.div);
};
Div.prototype.addEvent = function(type, func){
//IE浏览器
if(this.div.attachEvent)
this.div.attachEvent("on" + type, func);
//火狐浏览器
else if(this.div.addEventListener)
this.div.addEventListener(type, func, false);
};
</script>
</head>
<body>
<script type="text/javascript">
////////////////////////////////////////////////////////////////////////////////测试代码
var div = new Div();
//目前还不支持类似于{border:solid 1px red;}这样的结构
div.addStyle("{position:absolute;left:200px;top:60px;width:100px;height:100px; backgroundColor:#EFEFEF;border-style:solid;border-color:orange;border-width:2px;}");
div.appendParent(document.body);
div.addEvent('click', function(){div.removeSelf.apply(div,[]);});
</script>
</body>
</html>
相关文章推荐
- jquery 如何动态添加、删除class样式方法介绍
- jquery 动态给div添加元素删除元素
- C#入门学习-----选项卡(更改显示样式、动态添加/删除、获得名称)
- JQuery之为某个div添加行样式
- JavaScript动态设置div的样式的方法
- div动态设置样式
- C#动态给页面添加样式
- Jquery获取勾选复选框里面的值并且动态添加到一个新的div里面
- 动态添加、删除div
- JS动态添加样式和脚本
- js 动态添加元素(div、li、img等)及设置属性
- 使用jQuery加DIV实现可以动态添加的金字塔结构
- jquery动态添加删除div 具体实现
- 用后台代码动态为前台DIV添加标签,控件
- 再谈javascript 动态添加样式规则 W3C校检
- Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法
- div添加背景图时候与清除浮动样式冲突
- Css transition属性(添加动态过渡样式)
- Easyui中使用jquery或js动态添加元素时出现的样式失效的解决方法
- javascript动态添加样式(行内式/嵌入式/外链式等规则)