javascript 动态改变样式

  在《深入浅出javascript》中看到这样的例子

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html dir="ltr" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
	<title>Example: Style Switcher</title>
  	<link href="demoStyles.css" title="Normal" rel="stylesheet" type="text/css">
  	<link href="largePrint.css" title="Large Print" rel="alternate stylesheet" type="text/css">
  	<link href="highContrast.css" title="High Contrast" rel="alternate stylesheet" type="text/css">
  	<script type="text/javascript" src="../DOMhelp.js">
	</script>
  	<script type="text/javascript" src="styleSwitcher.js">
	</script>
</head>
<body>
...

  忽略body的内容。。通过javascript得到link标签的内容,产生改变样式的菜单

switcher={
	menuID:'styleswitcher',
	chooseLabel:'Choose Style:',
//初始化,生成样式切换菜单。。
	init:function(){
		var tempLI,tempA,styleTitle;
		var stylemenu=document.createElement('ul');
		tempLI=document.createElement('li');
		tempLI.appendChild(document.createTextNode(switcher.chooseLabel));
		stylemenu.appendChild(tempLI);
		stylemenu.id=switcher.menuID;
		var links=document.getElementsByTagName('link');
		for(var i=0;i<links.length;i++){
			if(links[i].getAttribute('rel')!='stylesheet' && 
			links[i].getAttribute('rel')!='alternate stylesheet'){
				continue;
			}
			tempLI=document.createElement('li');
			tempA=document.createElement('a');
			styleTitle=links[i].getAttribute('title');
			tempA.appendChild(document.createTextNode(styleTitle));
			tempA.setAttribute('href','#');
			tempA.οnclick=function(){
				switcher.setSwitch(this);
			}
			tempLI.appendChild(tempA);
			stylemenu.appendChild(tempLI);
		}		
		document.body.appendChild(stylemenu);
	},
	setSwitch:function(o){
		var links=document.getElementsByTagName('link');
		for(var i=0;i<links.length;i++){
			var title=o.firstChild.nodeValue;
			if(links[i].getAttribute('title')!=title){
				links[i].disabled=true;
			} else {
//ie下有bug的一段,重复按同样的标签,样式会崩溃
				links[i].setAttribute('rel','stylesheet');
				links[i].disabled=false;
			}
		}			
		return false;
	}
}
DOMhelp.addEvent(window,'load',switcher.init,false);
links[i].setAttribute('rel','stylesheet');在ie下会导致样式崩溃,不知道为何,求大神解答吧。
将样式提前设置
	init:function(){
		var tempLI,tempA,styleTitle;
		var stylemenu=document.createElement('ul');
		tempLI=document.createElement('li');
		tempLI.appendChild(document.createTextNode(switcher.chooseLabel));
		stylemenu.appendChild(tempLI);
		stylemenu.id=switcher.menuID;
		var links=document.getElementsByTagName('link');
		for(var i=0;i<links.length;i++){
			if(links[i].getAttribute('rel')!='stylesheet' && 
			links[i].getAttribute('rel')!='alternate stylesheet'){
				continue;
			}
                        //在初始化时,预设link的rel
			if(links[i].getAttribute('rel')=='alternate stylesheet'){
				links[i].setAttribute('rel','stylesheet');
			}
....
还有个bug,就是在ie下一开始选第二、第三个样式时,样式继续崩溃。
继续研究中。。
求解答~

转载于:https://www.cnblogs.com/liane/archive/2011/07/16/2108473.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值