改变dom样式的方法

改变dom样式有两种做法,一种是通过domNode.style.xxx = "",给domNode加上内置样式,这种方式如果需要的样式比较多,就只好一个个增加,比较麻烦,还有一种方式比较聪明,通过在css里预设好几种不同样式的类,然后需要更改某domNode的样式时,可以修改domNode的className,这是比较聪明的一种做法。

但是如果是某种类型的domNodes全都要改某种样式,这两种做法都需要遍历元素,对每一个进行操作一次,今天空想冒出个想法,能不能动态创建一个<style>节点,然后通过.innerHTML,给这个<style>节点填充css内容呢?

var newNode = document.creatElement("style");

document.body.appendChild(newNode);

newNode.innerHTML = "body{background:#000}";

按这个设想写了代码,结果在FF下执行正常,IE下没有出现我想要的效果。于是调试了半天,把.innerHTML换成.firstChild.nodeValue依然不行。最终发现,一直到document.body.appendChild(newNode);这一步都可以顺利执行,但是到了赋值这一步就不行了。于是换了种方法,直接在body里写上一个<style type="text/css" id ='test'></style>标签,然后用document.getElementById("test").innerHTML = "body{background:#000;}"来写,不动态创建节点了,结果还是在IE下不行。于是想偷偷骗浏览器一下试试,不直接把<style>结点赋值,改成

<div id = "test"></div>

document.getElementById("test").innerHTML = "<style type='text/css'>body{background:#000}</style>";

还是不行,哭 T_T

最终结论,FF下<style>结点是可读写的,而IE下<style>结点是只读的。

================================================================

后记:

     今天找到一篇文章,讲的东西和我这篇文章讲的相似,但那篇文章里提到了ie下修改<style>标签的方法,有点生僻。转载过来。原文地址:http://hi.baidu.com/chenlinwei/blog/item/4a287f0a664c521995ca6b41.html

========================================

关于STYLE标签在FF,IE下的不同操作

有时候要动态的在页面中调整样式,需要用到对<style id="styleHandle"> .main a{text-decoration:none;}</style>标签的操作,这个在firefox下比较好办,
以jquery举例,只要$("#styleHandle").html("内容") 就可以了
但是在IE中,这样是不可以的。
IE对Style的处理很严格,不像其他普通的标签。
这里是IE对style标签操作的代码
    var obj = document.styleSheets[document.styleSheets.length-1]; 获得style的引用
                var rules = obj.rules || obj.cssRules;
                var selectorText;
                var styleObj = {};
                for(var i=0;o=rules[i];i++){
                    selectorText = o.selectorText; 这个selectorText 就是 <style>里面的每个样式的名称
                   
                   
                    styleObj[selectorText] = o.style;    每个样式具体的样式map        
                   
                }

操作到这里,比如我们现在要修改 开头所指的那个<style>中 .main a 的样式,将text-decoration设为underline
设置如下:
styleObj [".main A"].textDecoration = "underline";

注意这里的A要大写,不管你在style里面写的是大写还是小写,IE都会将a转换为大写。

完整测试代码:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
<!--
* {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
.height {
height:200px;
}
.width {
width:200px;
}
.color{
background-color:#CCCCCC;
}

.object_text{background-color:#CCCCCC;text-decoration:none; color:#377AD9; border-bottom: 1px none #377AD9;}

.object_text a:hover{background-color:#CCCCCC;text-decoration:none; color:#377AD9; border-bottom: 1px none #377AD9;}

-->
</style>
</head>

<body>
<hr />
Color:<br />
<input type="radio" name="radio" id="radio" value="#ff0000" οnclick="c(this)" />#ff0000
<input type="radio" name="radio" id="radio2" value="#ff00ff" οnclick="c(this)" />#ff00ff
<input type="radio" name="radio" id="radio3" value="#cc6600" οnclick="c(this)" />#cc6600
<input type="radio" name="radio" id="radio4" value="#000000" οnclick="c(this)" />#000000
<hr />
Width:
<input type="text" name="textfield" id="textfield" οninput="w(this)" onpropertychange="w(this)" />
Height:
<input type="text" name="textfield2" id="textfield2" οninput="h(this)" onpropertychange="h(this)" />
<table border="1">
<tr>
    <td class="height width color"></td>
    <td class="height width color"></td>
    <td class="height width color"></td>
    <td class="height width color"></td>
    <td class="height width color"></td>
</tr>
</table>
</body>
</html>
<script language="javascript" type="text/javascript">
var o;
var obj = document.styleSheets[0];
var rules = obj.rules || obj.cssRules;

var styleObj = {};
var selectorText,readonly,style,cssText;
for(var i=0;o=rules[i];i++){
selectorText = o.selectorText;
//readonly = new String(o.readOnly); IE
//cssText = o.cssText; FF
style = o.style;
alert(selectorText);
document.write(selectorText.fontcolor("#ff0000"),"<br />");
styleObj[selectorText] = style;
}

function c(obj){
if(obj.checked)
styleObj[".color"].backgroundColor = obj.value;
}

function h(obj){
try{
styleObj[".height"].height = parseInt(obj.value) + "px";
}catch(e){}
}

function w(obj){
try{
alert(styleObj[".object_text A"].color);
styleObj[".width"].width = parseInt(obj.value) + "px";
}catch(e){
     alert(e);
}
}
</script>

转载于:https://www.cnblogs.com/cly84920/archive/2009/03/06/4427030.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】胶片曝光时的排版!!!!!!!

这个本来没啥 不是什么算法 绝技。 都不值得一提。 其实这个是医学影像胶片曝光时排版的一个逻辑。 dicom标准第三部分 主要是讲IOD定义 在第166页有这样的描述&#xff1a; 表C.13.5-1图象盒象素描述组件 属性名称 标记       说明 图象位置 (2020,0010)  …

计算机课数学,这4个专业,对数学要求很高,数学不好的慎选!

建筑学专业这个专业就是典型数学课程比较多的专业&#xff0c;如果数学成绩不好&#xff0c;真心建议千万不要选择这个专业&#xff0c;因为学习的课程与大多与数学有关&#xff0c;而且难度较大。像代数&#xff0c;微积分&#xff0c;线性规划&#xff0c;统计学等课程都是在…

架构师之路(5)---IoC框架

1 IoC理论的背景 我们都知道在面向对象的应用中&#xff0c;软件系统都是由N个对象组成的&#xff0c;它们通过彼此的合作&#xff0c;最终实现业务逻辑。 图1&#xff1a;耦合在一起的对象 如果我们打开机械式手表的后盖&#xff0c;就会看到与上面类似的情形&#xff0c;各…

【转】数据库软考笔记(一)第一章 计算机硬件基础知识笔记总结

转自&#xff1a;https://blog.csdn.net/qq_36411874/article/details/115057569 目录 运算器&#xff1a;ALU、AC、DR、PSW 控制器&#xff1a;IR、PC、AR、ID 寄存器组&#xff08;了解即可&#xff09; 存储器 存储器与总线&#xff08;了解&#xff0c;考分类&#xf…

Vlan的转发过程

untag就是普通的ethernet报文&#xff0c;普通PC机的网卡是可以识别这样的报文进行通讯&#xff1b; tag报文结构的变化是在源mac地址和目的mac地址之后&#xff0c;加上了4bytes的vlan信息&#xff0c;也就是vlan tag头&#xff1b; 一般来说这样的报文普通PC机的网卡是不能…

翻转课堂说教案计算机,计算机学院崔海文:对翻转课堂的进一步认识与思考

近期我有幸参加了学校教师发展中心组织的信息化教学培训班&#xff0c;认真聆听了各位教授的讲座&#xff0c;收获颇多。傅钢善教授的报告《信息技术环境下如何上好一堂课》让我的收获最大&#xff0c;教授的讲座宛如一顿丰盛的大餐&#xff0c;生动且不失严谨的呈现在大家面前…

Dos下命令运行带有包名的Java类

这几天在回顾原来的知识,发现知识一段时间不整理的话很多东西手生的很,今天刚刚想在dos下运行一个java类却出错了.Exception in thread "main" java.lang.NoClassDefFoundError 为什么呢?后面找了许久发现是类中带有包名的问题. 1.当类没有包…

嵌入式的基础知识

1.嵌入式操作系统结构 一般情况下分为硬件子系统和软件子系统&#xff1b; 硬件子系统主要包括&#xff1a;CPU小系统&#xff0c;电源模块&#xff0c;调试模块&#xff0c;时钟模块&#xff0c;接口模块&#xff0c;复位和配置模块&#xff1b; 软件子系统主要包括&#x…

【转】DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像

转自&#xff1a;https://www.cnblogs.com/mfrbuaa/p/4004114.html 有修订 背景介绍&#xff1a; 近期项目需求&#xff0c;需要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发。在C语言下&#xff0c;我使用的是应用最广泛的DCMTK开源库&#xff0c;在本专栏的起初阶段…

量子计算机的核心元件简称,计算机文化基础复习题(含答案).doc

计算机文化基础复习题(含答案)整理计算机文化基础复习题第一套一、单项选择题(每题1分&#xff0c;共30分)1、在Powerpoint2003中&#xff0c;若为幻灯片中的对象设置"驶入效果"&#xff0c;应选择对话框 (? )???? A、自定义放映???? B、幻灯片版式????…

xfire客户端对返回list很挑剔,所以需要使用泛型。

casldap异常分析 | xfirewebservice(服务器配置篇) 2008-12-31xfirewebservice(客户端调用篇) 服务接口&#xff0c;就是用来调用的&#xff0c;所以客户端显得尤为重要&#xff0c;xfire客户端对返回list很挑剔&#xff0c;所以需要使用泛型。 如何建立webservice client 步骤…

C语言关键字----Const

C中CONST的使用&#xff1a;   虽然这听起来很简单&#xff0c;但实际上&#xff0c;const的使用也是c语言中一个比较微妙的地方&#xff0c;微妙在何处呢&#xff1f;请看下面几个问题。   问题&#xff1a;const变量 & 常量   为什么下面的例子在使用一个const变量…

【转】DICOM的常用Tag分类和说明!!!!

转自&#xff1a;https://www.cnblogs.com/stephen2014/p/4579443.html 有删改 1. 前言&#xff1a; 基于DICOM3.0标准的医学图像中&#xff0c;每一张图像中都携带着许多的信息&#xff0c;这些信息主要可以分为Patient, Study, Series和Image四类。每一个DICOM Tag都是…

计算机卡在无法显示网页,我的电脑上网上银行一直“无法显示网页”

首先&#xff1a;打开一个网页&#xff0c;点击“工具”&#xff0d;&#xff0d;internet选项&#xff0d;&#xff0d;高级&#xff0d;&#xff0d;还原默认设置&#xff0d;&#xff0d;应用&#xff0d;&#xff0d;确定 其次&#xff1a;使用这个修复工具试一试&#xff…

在虚拟机上运行vxWorks

Vxworks是一个嵌入式系统&#xff0c;主要运行在arm、ppc、mips等嵌入式处理器上&#xff0c;它同样可以运行在X86处理器上。风河公司开发的tornado开发环境就 包括了pentium版本&#xff0c;并且发布了相应的bsp。因此我们可在vmware虚拟机上运行vxworks&#xff0c;利用虚拟机…

【转】成熟的医学影像“调窗”(window-leveling)算法详解

转自&#xff1a;http://blog.sina.com.cn/s/blog_4bce5f4b0100o9iy.html 图像显示和打印面临的一个问题是&#xff1a;图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 CT 里的例子有软组织、骨头、脑组织、肺、腹部等等。 技术问题&#xff1a; 显示…

南京大学计算机系副教授名单,2018年度国际“人工智能10大新星”名单公布:南京大学俞扬副教授国内高校入选者...

中公考研小编为各位考研小伙伴们整理了关于2018年度国际“人工智能10大新星”名单公布&#xff1a;南京大学俞扬副教授国内高校唯一入选者的相关资讯文章&#xff0c;一起了解一下吧~日前&#xff0c;国际人工智能领域著名杂志 IEEE Intelligent Systems 发布了2018年度“人工智…

使用SDL打造游戏世界之入门篇 - 7

打开和显示图片在这个例子里我们将学习如何使用SDL程序中打开和显示图片。示例程序将绘制一个漂亮的背景&#xff0c;上面显示一个正方形图案&#xff0c;并可以使用键盘的方向键移动它。如果比较熟悉“推箱子”这个游戏&#xff0c;可以看出这个程序实际就是推箱子游戏的基础。…

WDB

1. 符号表同步貌似只能是target shell下载后&#xff0c;能够在host shell下更新&#xff0c;当host shell下载的话&#xff0c;target shell是无法更新的。 2. host shell下执行某一个函数的时候&#xff0c;WDB会自动生成一个新的任务来运行&#xff0c;这个任务的IO将被重定…

【转】GPS从入门到放弃(一) --- GPS基础原理

转自&#xff1a;https://blog.csdn.net/tyst08/article/details/100529424 GPS从入门到放弃&#xff08;一&#xff09; — GPS基础原理 GPS&#xff0c;全称Global Positioning System&#xff0c;已经广泛应用于我们的日常生活中了&#xff0c;现在的智能手机 里都会自带G…