#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
У меня есть длинная таблица, состоящая из таких строк
<tr id="row_369696" class="lvtColData" bgcolor="white" onmouseout="this.className='lvtColData'" onmouseover="this.className='lvtColDataHover'">
<td width="2%"></td>
<td bgcolor="#FFFFFF">
27-10-2014
<span style="display:none;" module="Accounts" fieldname="cf_1390" recordid="369696" type="metainfo"></span>
</td>
<td bgcolor="#FFFFFF">
12:30
<span style="display:none;" module="Accounts" fieldname="cf_1380" recordid="369696" type="metainfo"></span>
</td>
</tr>
конечный результат, который мне нужен, — это изменить фон этой строки, когда время и дата совпадают с содержимым столбцов, отмеченных fieldname cf_1390
для части даты и cf_1380
для части времени.
я думал об использовании jquery для циклического просмотра строк, поиска содержимого ячейки, сравнения его с текущей датой и, если оно совпадает, изменения фона строки, но я не могу понять, как это сделать.
кто-нибудь может мне помочь с каким-нибудь примером jsfiddle ? 🙂
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос и включите код jQuery, который вы пробовали.
2. Вы запрашиваете jsFiddle и даже не можете предоставить какой-либо пример кода, хм… К вашему сведению, вы должны использовать допустимые пользовательские атрибуты, используя
data-*
Ответ №1:
Вот пример перебора ваших строк, проверки соответствия даты и времени переменным (которые я только что жестко закодировал вверху для этого примера), а затем присвоения им красного цвета, если в этой строке совпадают дата и время.
JS:
var date = "27-10-2014";
var time = "12:32";
$(document).ready(function(){
$('#targetTable tr').each(function(i,e){
var match = 0;
$(this).children('td').each(function(i2,e2){
content = $(e2).html().substring(0, $(e2).html().indexOf('<span')).trim();
if(content == date){ match ; }
if(content == time){ match ; }
});
if(match == 2){
$(this).css('background','red');
$(this).children('td').css('background','red');
}
});
});
Ответ №2:
Вот простой для понимания пример.
JSFiddle http://jsfiddle.net/h3Xd3 /
HTML
<table id="myTable">
<tr id="row_369696" >
<td bgcolor="#FFFFFF">
27-10-2014
<span style="display:none;" module="Accounts" fieldname="cf_1390" recordid="369696" type="metainfo"></span>
</td>
<td bgcolor="#FFFFFF">
12:30
<span style="display:none;" module="Accounts" fieldname="cf_1380" recordid="369696" type="metainfo"></span>
</td>
</tr>
</table>
CSS .highlight{background-color:lightgrey;}
jQuery
function datesEqual(a, b)
{
return (!(a>b || b>a))
}
$(function () {
// Handler for .ready() called.
$("#myTable tr").each(function(){
//Get date and hour. Split each item by the appropriate separator
var date_row = $(this).find("td:eq(0)").text().split("-");
var hour_row = $(this).find("td:eq(1)").text().split(":");
var date_object = new Date(date_row[2], date_row[1] - 1, date_row[0], hour_row[0], hour_row[1]);
var YOUR_OTHER_DATE = new Date(date_row[2], date_row[1] - 1, date_row[0], hour_row[0], hour_row[1]); //You have to change this line
if ( datesEqual(YOUR_OTHER_DATE, date_object) == true){
$(this).find("td").addClass("highlight");
}
});
});
Не забудьте изменить YOUR_OTHER_DATE
значение. Это зависит от ваших потребностей, но у нас недостаточно деталей, чтобы дать полный ответ.