Цикл в цикле
Здравствуйте коллеги.
С Javascript не работал, но вот понадобилось допилить страничку для вывода статистики. Есть таблица, имя - цифра. Данные заполняются из БД. Поэтому количество строк и их порядок могут быть разными. Первая задача - окрашивать цифру при увеличении определённого порога - это я сделал. Вторая, то что у меня не получается - для разных фамилий этот порог разный, нужно сначала определять имя, смотреть какой у него порог и тогда окрашивать или нет цифру. Таблица: <tr> <asp:Repeater id="Infra_full" runat="server"> <ItemTemplate> <tr> <td id = "nm"><%#DataBinder.Eval(Container.DataItem, "NM")%></td> <td id = "fhrpr"><%#DataBinder.Eval(Container.DataItem, "FHRR")%> %</td> </tr> </ItemTemplate> </asp:Repeater> </tr> Код скрипта изначально пробовал по принципу, который работает в PowerShell, но на Javascript это не прокатило. Почему, не могу понять: <script type="text/javascript"> $('td#nm').each(function(){ var n = $(this).text() if (n == "Viktor Pupkin") $('td#fhrpr'){ var x = parseFloat($(this).text()); if (x >= 5) $(this).css({color: 'Blue'}) } }) </script> Пробовал по другому принципу, отметить искомые строчки, потом их окрасить, всё равно не работает: <script type="text/javascript"> $('td#nm').each(function(){ var n = $(this).text() if (n == "Viktor Pupkin") $('td#fhrpr').addClass("Group1") }) $('td.Group1,td#fhrpr').each(function(){ var x = parseFloat($(this).text()); if (x >= 5) $(this).css({color: 'Blue'}) }) </script> Если вот тут поставить пробел, то вообще ничего не окрашивается, если запятую, то окрашивает всё столбцы, и выбранные, и не выбранные: $('td.Group1,td#fhrpr') |
strsin,
id уникально используйте классы |
strsin,
вариант для неправильного id <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> td{ border: solid 3px rgb(128, 0, 128); background-color: rgb(255, 255, 0); } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <script> $(function() { $("tr").each(function() { "Viktor Pupkin" == $("#nm", this).text() && $("#fhrpr", this).text(function(b, a) { 5 <= +a && $(this).css({ color: "Blue" }) }) }) }); </script> </head> <body> <table width="400" summary="" > <thead> <tr> <th>name</th> <th>num</th> </tr> </thead> <tbody> <tr> <td id = "nm">Viktor Pupkin</td> <td id = "fhrpr">1</td> </tr> <tr> <td id = "nm">Viktor Pupkin</td> <td id = "fhrpr">5</td> </tr> </tbody> </table> </body> </html> |
рони
Не совсем понял, что значит для неправильного id? Данный код не окрашивает ничего. |
Цитата:
Цитата:
Цитата:
|
strsin,
вместо id должен быть class <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> td{ border: solid 3px rgb(128, 0, 128); background-color: rgb(255, 255, 0); } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <script> $(function() { $("tr").each(function() { "Viktor Pupkin" == $("#nm", this).text() && $("#fhrpr", this).text(function(b, a) { 5 <= +a && $(this).css({ "background-color": "Blue", color : "rgb(255, 255, 255)" }) }) }) }); </script> </head> <body> <table width="400" summary="" > <thead> <tr> <th>name</th> <th>num</th> </tr> </thead> <tbody> <tr> <td id = "nm">Viktor Pupkin</td> <td id = "fhrpr">5</td> </tr> <tr> <td id = "nm">Viktor Pupkin</td> <td id = "fhrpr">1</td> </tr> <tr> <td id = "nm">Viktor Pupkin</td> <td id = "fhrpr">5</td> </tr> </tbody> </table> </body> </html> |
Цитата:
Но я так и не понял. Вы говорите использовать class, но в вашем скрипте сами используете id |
Цитата:
|
С классами понятно. Скрипт работает.
Единственное, чтобы в таблице был знак % я добавил в скрипт parseFloat. $('td#fhrpr').each(function(){ var x = parseFloat($(this).text()); if (x >= 5) $(this).css({color: 'Blue'}) }) А вот тут я не пойму куда его засунуть, скрипт перестаёт работать куда бы не засунул: $(function() { $("tr").each(function() { "Viktor Pup" == $("#nm", this).text() && $("#fhrpr", this).text(function(b, a) { 5 <= +a && $(this).css({ color: "Green" }) }) }) }); |
strsin,
$(function() { $("tr").each(function() { "Viktor Pup" == $("#nm", this).text() && $("#fhrpr", this).text(function(b, a) { 5 <= parseFloat(a) && $(this).css({ color: "Green" }) }) }) }); |
Часовой пояс GMT +3, время: 00:08. |