在《深入浅出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下一开始选第二、第三个样式时,样式继续崩溃。
继续研究中。。
求解答~