Вопрос по jquery

12
LEOnidUKG
На сайте с 25.11.2006
Offline
1768
1013

есть таблица:

<table id="testtab">

<tbody><tr id="testtr">
<th id="testth">Ruby</th>
<td id="testtd">80%</td>
</tr>
<tr id="testtr">
<th id="testth">JavaScript</th>
<td id="testtd">20%</td>
</tr>
</tbody></table>

пытаюсь забрать все значения в массив вот такой функцией:

$(window).load(function () {

var paper = Raphael("holder", 700, 700),
values = [],
labels = [];
$("tr#testtr").each(function () {
values.push(parseInt($("td#testtd").text(), 10));
labels.push($("th#testth").text());
});
paper.pieChart(350, 350, 200, values, labels, "#000");
});

но берётся только первое значение и всё. Понять почему так не могу :(

и кстате, если брать данные без ID то работает.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#1

Во первых id заменить на class :) (id - идентификатор уникального элемента)

Во вторых заменить

parseInt($("td#testtd").text(), 10)

на

parseInt($(this).find("td.testtd").text(),10);
и т.д.
LEOnidUKG
На сайте с 25.11.2006
Offline
1768
#2

Так этот find везде вставить?


$(window).load(function () {
var paper = Raphael("holder", 700, 700),
values = [],
labels = [];
$(this).find("tr.testtr").each(function () {
values.push(parseInt($(this).find("td.testtd").text(),10); );
labels.push($(this).find("th.testth").text());
});
paper.pieChart(350, 350, 200, values, labels, "#000");
});

???

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#3

each - перебор всех элементов

find - поиск в выбранном элементе

соответственно первый вызов не нужен

[Удален]
#4

Да, но самое главное не забыть поменять id На class =)

LEOnidUKG
На сайте с 25.11.2006
Offline
1768
#5

хм...

а как функцию прилепить?

$(this).find("tr.testtr").(function () {

[Удален]
#6

LEOnidUKG, .each

[Удален]
#7

$(this) в данном случае это Window что ли?

факмоймоск

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#8
neolord:
$(this) в данном случае это Window что ли?
факмоймоск

При вызове обработчика событий ключевое слово this ссылается на элемент, который это событие вызвал.

LEOnidUKG
На сайте с 25.11.2006
Offline
1768
#9

Не работает... Массив пуст.

в этом моменте так и не понял: $(this).find("tr.testtr").each(function () {

[Удален]
#10
Алексей Барыкин:
При вызове обработчика событий ключевое слово this ссылается на элемент, который это событие вызвал.

Ну в данном случае это Window ? Если я прально понимаю джейквери, то функция вызывается при body.onload ?

neolord добавил 24.02.2009 в 13:45

LEOnidUKG:
Не работает... Массив пуст.

в этом моменте так и не понял: $(this).find("tr.testtr").each(function () {

вот меня этот this смущает, попробуйте вместо него прописать ид общей таблицы в кавычках, testtab что ли

Суть в том что функция применится для каждого найденного по селектору элемента. Соответственно надо объявить уровнем выше массив, заносить в него значения внутри функции объявленной в each а потом один раз строить график

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий