首先,JavaScript绝对不是我的母语。不过,我的任务是创建一个网页,用户可以使用颜色选择器来更改CSS元素。然后这些需要被发送回服务器以存储在数据库中。除了最后一部分,这一切都工作得很好,因为我被困在阅读所需的元素。使用JavaScript枚举CSS样式元素
使用下面的代码对于任何单个单词元素(如color
)都可以正常工作,但对于任何带连字符的单词元素(例如background-color
)都会失败,这会返回undefined
。为了保持一致性,我已经对其他许多元素进行了测试。
任何想法为什么这会失败,最好有修复它的建议?或者,您是否有一个可以用于此目的的代码片段?的CSS样式表的
function Save(form) {
var cssRules;
var Q = "";
for (var S = 0; S < document.styleSheets.length; S++){
if (document.styleSheets[S]['rules']) {
cssRules = 'rules';
} else if (document.styleSheets[S]['cssRules']) {
cssRules = 'cssRules';
}
for (var R = 0; R < document.styleSheets[S][cssRules].length; R++) {
if (document.styleSheets[S][cssRules][R].selectorText == '.event') {
Q += "+bc=" + document.styleSheets[S][cssRules][R].style['color'] + "+bb=" + document.styleSheets[S][cssRules][R].style['background-color'];
}
// Similar code for other elements goes here
}
}
form.css.value = Q;
form.submit();
}
实施例部分:
.event {
text-align: center;
font-size: 10px;
font-weight: bold;
text-decoration: line-through;
color: red;
background-color: #ffff99;
height:20px;
width:20px;
}
这是一种HTML元素的我所需要的样式表值:
<td class="event">11</td>
虽然这与Jason的回答基本相同,但我会接受你的,因为有额外的细节,这对我很有帮助。谢谢。 – 2010-07-01 03:29:52
稍有误导:连字符是**标识符**中的无效字符。它在属性名称中不是无效的,正如你可以通过做'var o = {“%1-2 * -3”:“test”};警报(O [ “%1-2 * -3”]);'。然而,你可能是正确的,因为CSS属性名称在JavaScript中是不同的,所以它们可以用作标识符,因此点符号可以用来访问样式属性。 – 2010-07-01 08:42:11
啊,Anurag也提出了相同的观点。 – 2010-07-01 08:43:15