2017-08-11 68 views
0

我有一个7行和2个选项卡的表格,用于星期日和星期一。它会根据当前时间以红色突出显示特定行。 我想知道是否有可能添加选框效果到表中有红色背景的行

<marquee>My first Row</marquee> 

效果添加到其被突出显示与红色背景和当第二行被高亮显示,然后自动选取框效果移动到该行的特定行。

这里是我的表的代码

function openCity(evt, cityName, today) { 
 
    var i, tabcontent, tablinks; 
 
    tabcontent = 
 
    document.getElementsByClassName("tabcontent"); 
 
    for (i = 0; i < tabcontent.length; i++) { 
 
    tabcontent[i].style.display = "none"; 
 
    } 
 
    tablinks = document.getElementsByClassName("tablinks"); 
 
    for (i = 0; i < tablinks.length; i++) { 
 
    tablinks[i].className = tablinks[i].className.replace(" active", ""); 
 
    } 
 
    document.getElementById(cityName).style.display = "block"; 
 
    if (typeof today == 'undefined') { 
 
    evt.currentTarget.className += " active"; 
 
    } else { 
 
    tablinks[today].className += " active"; 
 
    } 
 
} 
 

 
let now = new Date().getHours() * 100 + new 
 
Date().getMinutes(); 
 
let times = [900, 1000, 1015]; 
 
let classes = ['ra1', 'ra3', ]; 
 
let selected = classes[times.reduce((acc, curr, idx) => now >= 
 
    curr ? idx : acc)]; 
 
if (selected){ 
 
    var elements = document.getElementsByClassName(selected); 
 
    for(var i=0;i<elements.length; i++){ 
 
     elements[i].style.background = 'red'; 
 
     elements[i].innerHTML = "<marquee>" + elements[i].innerHTML + "</marquee>"; 
 
} 
 
}
.tabcontent { display: none }
<div class="tab" style="margin-top: 1.6%; "> 
 
    <button class="tablinks" onclick="openCity(event, 'Sun0') ">Sun</button> 
 
    <button class="tablinks" onclick="openCity(event, 'Mon0')">Mon</button> 
 

 
</div> 
 

 
<div id="Sun0" class="tabcontent" id="np"> 
 

 

 
    <div style="overflow-x:auto;"> 
 
    <table> 
 
     <col width="65%"> 
 
     <col width="35%"> 
 
     <tr> 
 
     <th>Class</th> 
 
     <th>Time</th> 
 
     </tr> 
 

 
     <tr> 
 
     <td class="ra1">10:15-11:00AM</td> 
 
     <td style="background:black; color:Yellow;">It is Sunday </td> 
 

 
     </tr> 
 
     <tr> 
 
     <td class="ra3">11:00-11:45AM</td> 
 
     <td style="background:black; color:Yellow;">It is Sunday</td> 
 

 
     </tr> 
 
    </table> 
 
    </div> 
 
</div> 
 

 

 
<div id="Mon0" class="tabcontent"> 
 

 
    <!--Monnday--> 
 
    <div style="overflow-x:auto;"> 
 
    <table> 
 
     <col width="65%"> 
 
     <col width="35%"> 
 
     <tr> 
 
     <th>Class</th> 
 
     <th>Time</th> 
 
     </tr> 
 

 
     <tr> 
 
     <td class="ra1">10:15-11:00AM</td> 
 
     <td style="background:black; color:Yellow;">It is Monday</td> 
 

 
     </tr> 
 
     <tr> 
 
     <td class="ra3">11:00-11:45AM</td> 
 
     <td style="background:black; color:Yellow;">It is Monday</td> 
 

 
     </tr> 
 
    </table> 
 
    </div> 
 
</div>

+0

的[''(https://developer.mozilla.org/en/docs/Web/HTML/Element/marquee)元素已经过时了,你确定你想用它? – Gerardo

+0

好,如果有新的选择,我会很乐意使用那个。 –

+0

没有新的选择,你可以使用jQuery和一个选取框插件 – Gerardo

回答

1

由于字幕元素已经过时了,你将不得不依赖于CSS动画或第三方插件才达到的是,

使用css你可以指定css类(例如:选取框),在那里你将红色背景分配给行,并且可以在该类中写入以下css:

.marquee { 
 
    width: 750px; 
 
    margin: 0 auto; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    box-sizing: border-box; 
 
} 
 

 
.marquee td { 
 
    display: inline-block; 
 
    padding-left: 100%; /* show the marquee just outside the paragraph */ 
 
    animation: marquee 15s linear infinite; 
 
} 
 

 
.marquee td:hover { 
 
    animation-play-state: paused 
 
} 
 

 
/* Make it move */ 
 
@keyframes marquee { 
 
    0% { transform: translate(0, 0); } 
 
    100% { transform: translate(-100%, 0); } 
 
}
<table> 
 
    <tr> 
 
    <td>test 1</td> 
 
    <td>test 2</td> 
 
    </tr> 
 
    <tr class="marquee"> 
 
    <td>test 4</td> 
 
    <td>test 5</td> 
 
    </tr> 
 
</table>

+0

好,确实是半场战斗。正如我已经说过,我有7行和红色背景从45分钟间隔从一排到另一排......所以我想在有红色背景的行中获得选框效果。我认为任何JavaScript或jQuery都会有帮助,但我不知道如何继续。 –