首先,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