我产生从Page_Load中数据库值一些CSS再裹上它喜欢 -
CssDiv.InnerHtml = "<style id=\"main_styles\" type=\"text/css\">\n" + {Css as string} + "\n</style>"
这里CssDiv是喜欢 -
<div id="CssDiv" runat="server"></div>
用户被允许与拾色器和下拉菜单更改这些CSS值。 在选择器或下拉的变化,我想提出AJAX调用与选定值的服务器,它保存到数据库中。 现就本次申请成功,我必须根据用户的选择来改变$内容(“风格#main_styles”)。
问题是
1)当我改变的CSS它被反射在页面上而不是下的开发工具(打开时用鼠标右键单击要检查元素)。 例如,假设以下CSS-
#zoneBody .blocktextContent {
background-color: #99daee;
}
现在,从选择器,当我的代码运行正在应用的元素“#zoneBody .blocktextContent”关于#1066cc页面上,但是当我在显影检查元素安慰它仍然列明用户选择#1066cc
#zoneBody .blocktextContent {
background-color: #99daee; // while it should be- "background-color: #1066cc;"
}
2)我所做的修改将无法在浏览器中永久的,即当页面上的任何其他因素导致部分后回来,虽然我不在服务器上触摸CssDiv但其重置用户的选择。 (我有一个更新面板,一个包装完整的页面内容 ,甚至CssDiv ......这是造成部分后背上)。
我使用下面的代码应用用户的选择 -
var layoutelement= "#zoneBody .blocktextContent";
var style = "background-color";
var stylevalue= "#1066cc"; // user's selection
var sheets = document.styleSheets;
for (var i = 0; i < sheets.length; i++) {
var sheet = sheets[i];
if (sheet.ownerNode.id == "main_styles") {
var rules = sheet.cssRules;
for (var j = 0; j < rules.length; j++) {
var rule = rules[j];
if (rule.selectorText == layoutelement) {
rule.style.setProperty(style, stylevalue);
// I also tried "rule.style[style] = stylevalue;"
break;
}
}
break;
}
}
我不能使用 -
$(layoutelement).css(style, stylevalue);
因为layoutelement可能更为复杂喜欢 -
layoutelement = "#zoneBody .blockTextContent a,#zoneBody .blockTextContent a:link,#zoneBody .blockTextContent a:visited,#zoneBody .blockTextContent a .yshortcuts";
我希望我足够清楚的,但如果你需要更多的说明..让我知道意见。谢谢