這是我在這裏的第一篇文章,我決不是一個熟練的HTML/CSS/JavaScript程序員,所以如果我不表達自己夠清楚 - 對不起,如果太羅嗦!當鼠標懸停在同一張表的另一行上時,更改表格行的背景顏色
我對錶格內容使用了一個經典的HTML表格,並希望能夠改變不同於我當前懸停的行的背景顏色。
原因是我有很多表被分成「子表」,每個表都有自己的標題和下面的一行或多行。然而,這些子表(所有樣式都相同)不會被編碼爲表格,而只是使用不同的類來對它們進行樣式設置(主要是因爲它們太多而且很小,每行包含1-6行,包括標題)。
我想要做的是,一旦你懸停任何子表,它的標題和你當前指向的行應該改變背景顏色(後者很容易用CSS實現)。感謝網上找到的JavaScript,我設法實現了這一點 - 請參閱sample code這可能更好地解釋了這一點,另請參閱下面的代碼 - 但是,每個子標題都需要一個唯一的ID。 (請注意,每個子表都使用一個單獨的tbody - 如果將onMouseover
事件應用於每行,則在從一行懸停到另一行時,子標題的顏色將閃爍/關閉 - CSS永遠不會發生這種情況只有使用JavaScript時 - 當然還會創建更多的代碼)。
而不必爲每個子標題分配唯一的標識我想要一個替代使用類的解決方案,因爲每個子表使用同樣的(當然,我會給tbody
分配一個班級)。我想這個棘手的部分可能是爲了確保當前子表的頭部受到影響,而不是全部同時進行。 如果更容易創建一個解決方案,其中每個子表實際上都被編碼爲一個單獨的表(從語義角度來看,這也可能更好),那麼請這樣做。當然,如果JavaScript自己應用onMouseover
等事件,那麼當然會更好,這樣我就不必將它放入每個子表的內聯代碼中 - 我已經看到這可以用於按鈕等。我想這是可能的。
我從來沒有用過jQuery,所以純粹的JavaScript解決方案會更受歡迎。
對於示例代碼再請參閱my fiddle
任何輸入非常感謝!
中的JavaScript:
function changeTo(myId) { document.getElementById(myId).className='sub-header-highlight'; }
function changeBack(myId) { document.getElementById(myId).className='sub-header'; }
的CSS:在HTML的
thead { color: #FFF; background: #000; }
.sub-header { color: #FFF; font-weight: bold; background: #F00; }
.sub-header-highlight { color:# FFF; font-weight: bold; background: #0F0; }
tr.sub-header:hover { background: #0F0; } /* if JS turned off */
.sub-row1 { color: #000; background: #FFF; }
.sub-row2 { color: #000; background: #EEE; }
tr.sub-row1:hover, .sub-row2:hover { background: #FF0; }
部分:
<tbody onMouseover="changeTo('sub1');" onMouseout="changeBack('sub1');">
<tr class="sub-header" id="sub1">
<td>Sub-Header 1</td>
</tr>
<tr class="sub-row1">
<td>Contents of row 1</td>
</tr>
<tr class="sub-row2">
<td>Contents of row 2</td>
</tr>
<tr class="sub-row1">
<td>Contents of row 3</td>
</tr>
</tbody>
你應該把你的代碼放在這裏。 – Mageek 2012-07-27 17:29:41
好吧,我正在嘗試,但無法讓它正常工作,尤其是HTML部分被刪除,將再次嘗試。 – 2012-07-27 17:37:17
如果您查看[編輯幫助頁面](http://stackoverflow.com/editing-help),它將顯示如何格式化代碼以使其顯示。 (用於內聯代碼將其反編譯爲'''',或者代碼塊用空行分隔代碼,之前和之後以及每行縮進四個空格)。 – 2012-07-27 17:39:21