I am trying to append to a string in a for loop. I can alert each value bieng looped but i cant append for some reason:
<html>
<head>
<script type="text/javascript" language="javascript">
function doIt(){
var styleSheet = document.styleSheets[0];
var css="";
for (i=0; i<=styleSheet.cssRules.length; i++)
{
css += styleSheet.cssRules开发者_运维技巧[i].cssText;
//alert(styleSheet.cssRules[i].cssText); //WORKS
}
}
</script>
<style type="text/css">
.container{display:none;}
.markup-container{color:#404040;}
.title{text:decoration:underline;}
.body{color:#000;}
</style>
</head>
<body>
<input type="button" id="button" onmousedown="doIt()">
<div class="container">
<div class="markup-container">
<div class="title">This is a title with some markup</div>
<div class="body">This is the body with some markup and it's longer ^^</div>
</div>
</div>
</body>
</html>
Your for
loop is off by one :)
for (i=0; i<=styleSheet.cssRules.length; i++)
//should be:
for (i=0; i<styleSheet.cssRules.length; i++)
When this happens at the end:
styleSheet.cssRules[styleSheet.cssRules.length].cssText
You'll get an error, because you're one past the length of the array, and styleSheet.cssRules[i]
is undefined
, resulting in an error when you try to access the .cssText
property on it.
精彩评论