Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   посчитать сумму значений (https://javascript.ru/forum/jquery/17832-poschitat-summu-znachenijj.html)

Abraham 04.06.2011 22:10

посчитать сумму значений
 
Есть строка, а вней данные (1-5 значное число), этих строк может быть до 1000, как посчитать такие данные???
var stroka1 = $('#combined_table.vis tbody tr.nowrap td.unit-item:eq(7)');
var summa =

Gvozd 04.06.2011 22:52

each
for

Abraham 04.06.2011 23:21

можно чуть подробней?

walik 04.06.2011 23:59

var summa = 0;
$('#bla .bla bla').each(function() {
    summa += parseInt($(this).val());
});

Gvozd 05.06.2011 00:07

либо в цикле перебрать необходимые вам элементы, и также просумировать их значения

Abraham 05.06.2011 01:19

вывести на экран как эту сумму?

Gvozd 05.06.2011 02:28

alert

Abraham 05.06.2011 02:41

var summa = 0;
$('#combined_table.vis tbody tr.nowrap td.unit-item:eq(7)').each(function() {
    summa += parseInt($(this).val());
});
alert();



так полностью будет???

вылетает пустое окно

Gvozd 05.06.2011 04:02

Цитата:

Сообщение от Abraham
так полностью будет???

нет, разумеется.
вы бы хоть чуточку приложили мозгов и терпения.
в гугле прекрасно можно найти, что и как делать с помощью alert
Цитата:

Сообщение от Abraham
вылетает пустое окно

разумеется, ведь именно это вы и написали в программе.
Теперь исправьте чтобы в окне выводилась вычисленная сумма

Abraham 06.06.2011 23:42

Долго и упорно научился всё таки выдёргивать из кода нужные циферки

$(document).ready(function() {
var ssil = $('#content_value a[href*=info_vill]').each(function() {
      var ssil = ($(this).attr('href'));
var regVillage = /vill=\d{1,}/;
var regId = /id=\d{1,}/;
var resultV = ssil.match(regVill);
var resultI = ssil.match(regId);


alert(resultV + ' ' + resultI); 
   });
});


Спасибо.

Вот теперь другая заморока, как вытащит со страницы текст?
к примеру отсюда
<a href="http://javascript.ru/forum/">Форум</a>


как вытащить слово "Форум" или любое другое состоящее из 5 букивок :)

Abraham 07.06.2011 21:11

есть кто?

evgh 07.06.2011 21:23

угу, ждут твоих действий)

Abraham 07.06.2011 21:44

а по существу?

walik 07.06.2011 23:33

Цитата:

Сообщение от Abraham
а по существу?

Цитата:

Сообщение от Abraham
ждут твоих действий)

Покажи что у тебя не получается и мы поправим, в предыдущих постах ты же показывал что не получается, вот и помогли.
Регулярные выражения
RegExp

bayrach 08.06.2011 11:52

$('a').text();

Abraham 08.06.2011 21:28

Цитата:

Сообщение от walik
Покажи что у тебя не получается и мы поправим, в предыдущих постах ты же показывал что не получается, вот и помогли.

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

var ssil = $('#content_value a[href*=info_vill]').each(function() {
      var ssil = ($(this).attr('href'));


поиск ссылки

а как будет поиск текста?

Sweet 08.06.2011 21:40

Цитата:

Сообщение от Abraham
как искать, каким методом или функцией я незнаю

На этом сайте можно найти ответы на большинство вопросов, в том числе и по регулярным выражениям. Читай-учись.

Abraham 08.06.2011 22:02

чтож вы такие злые, дайте пример
там много всего

walik 08.06.2011 22:48

Цитата:

Сообщение от Abraham
как вытащить слово "Форум" или любое другое состоящее из 5 букивок

Как вариант пройтись циклом по всем ссылкам:
$('a').each(function() {

});


А в цикле уже проверять условие:
if ($(this).attr('href').length == 5) {
// bla bla bla
}

Abraham 12.06.2011 00:17

$(document).ready(function() {
$('.vbmenu_control a[href*=forum]').each(function() {
    var alllert = ($(this).attr('href').length == 5);
alert(alllert);
});
});


это вставлено в пользовательский скрипт для этого форума

вылетает 4 раза модальное окно с false и всё

что не так?

Sweet 12.06.2011 00:36

Цитата:

Сообщение от Abraham
что не так?

Все так:) Ведь не один href не содержит 5 символов. Посмотри хотя бы
alert( $(this).attr('href') );

Abraham 12.06.2011 00:53

блин, я думал мне дали ответ на поиск названия(текст) ссылки
как будет тогда поиск текста ссылки???

<a href="http://javascript.ru/forum/">Форум</a>

Sweet 12.06.2011 01:30

Блин, а чего ты хотел от .attr('href')??? Все ровно что сказать: "Блин, почему метод .getElementById возвращает елемент по id??? Я ожидал другого!!!":blink:
Вот документация. Там есть все ответы по jQuery.
Очевидно, тебе нужно html() или text().

Abraham 12.06.2011 02:08

Спасибо, это мне и надо было

Abraham 12.06.2011 04:15

$(document).ready(function() {
$('#content_value a[href*=info_village]').each(function() {
      var ssil = ($(this).attr('href'));
var regVillage = /village=\d{1,}/;
var regId = /\d{1,}$/;
var regCoordx = /\(\d{3}/;
var resultV = ssil.match(regVillage);
var resultI = ssil.match(regId);

alert(resultV + ' ' + ' ' + resultI);
});
$('#content_value a[href*=info_village]').each(function() {
      var str = ($(this).text());
var regCoordAll = /\d{3}\|\d{3}/;
var coords = str.match(regCoordAll);
alert(coords);
});
});


сделал :dance:

но терь куча ещё вопросов
1) как всё вывести на одно модальное окно
2) пытаюсь вывести любую переменную под обзац
типа:
$('#content_value a[href*=info_village]').after(coords);


нифига не появляется, почему?
побывал просто текст выводить, текст есть

Sweet 12.06.2011 05:54

1. Объяви переменную вне .each. Как-то так:
$(document).ready(function() {
  var all; 
  $('#content_value a[href*=info_village]').each(function() { 
    var ssil = $(this).attr('href');
    all = [ ssil.match(/village=\d+/), ssil.match(/\d+$/) ];
  }); 
  $('#content_value a[href*=info_village]').each(function() { 
    all.push( $(this).text().match(/\d{3}\|\d{3}/) ); 
  });
  alert( all.join(" ") ); 
});

2. Метод .after параметром принимает строку, DOM-элемент или jQuery-набор, а .match возвращает массив (или null, если ничего не нашел). Соответственно, нужно так:
if(coords)
  $('#content_value a[href*=info_village]').after(coords[0]);
Если coords === null, будет ошибка, так что проверка обязательна.

Кстати, {1,} - эквивалентно +. По-моему, \d+ по-приятнее, чем \d{1,}.

walik 12.06.2011 09:26

Цитата:

Сообщение от Abraham
блин, я думал мне дали ответ на поиск названия(текст) ссылки

Извиняюсь, а и не заметил что ошибся))

Abraham 12.06.2011 16:05

Цитата:

Сообщение от Sweet
1. Объяви переменную вне .each. Как-то так:
$(document).ready(function() {
var all;
$('#content_value a[href*=info_village]').each(function() {
var ssil = $(this).attr('href');
all = [ ssil.match(/village=\d+/), ssil.match(/\d+$/) ];
});
$('#content_value a[href*=info_village]').each(function() {
all.push( $(this).text().match(/\d{3}\|\d{3}/) );
});
alert( all.join(" ") );
});

Всё работает, круто, и кода меньше, спасибо.
Но есть одно но, если на странице $('#content_value a[href*=info_village]') больше 1 (20 например), то он не показывает остальные 19 модальных окон, только первое со значением первой строки
остальные тоже надо, как быть?

и ещё, поиск почему то происходит с 2 строки ('#content_value a[href*=info_village]'), первую почему то пропускает
хотя в этом варианте начинает с первой и перебирает все
$(document).ready(function() {
$('#content_value a[href*=info_village]').each(function() {
      var ssil = ($(this).attr('href'));
var regVillage = /village=\d{1,}/;
var regId = /\d{1,}$/;
var regCoordx = /\(\d{3}/;
var resultV = ssil.match(regVillage);
var resultI = ssil.match(regId);
 
alert(resultV + ' ' + ' ' + resultI);
});
$('#content_value a[href*=info_village]').each(function() {
      var str = ($(this).text());
var regCoordAll = /\d{3}\|\d{3}/;
var coords = str.match(regCoordAll);
alert(coords);
});
});



немного изменил вторую часть
$(document).ready(function() {
  var all;
  $('#content_value a[href*=info_village]').each(function() {
    var ssil = $(this).attr('href');
    all = [ ssil.match(/village=\d+/), ssil.match(/\d+$/) ];
  });
  var allcoords;
  $('#content_value a[href*=info_village]').each(function() {
    var coords = $(this).text();
    allcoords = [ coords.match(/\d{3}\|\d{3}/) ];
  });
  alert(all + ' ' + allcoords);
});

так как функция искала и собирала на всей странице, а нужно для каждой строки отдельно

2)
Цитата:

Сообщение от Sweet
if(coords)
$('#content_value a[href*=info_village]').after(coords[0]);

куда это дело сунуть надо? внутрь функции сувал, не пашет
вне функции тоже ((

Abraham 13.06.2011 03:18

Walik вся надежда на тебя ))

melky 13.06.2011 10:49

сколько он их ищет?
покажи

alert( $('#content_value a[href*=info_village]').length )

Abraham 13.06.2011 13:56

сделал, теперь все проверяет
$(document).ready(function() {
  var all;
  var coords;
  $('#content_value a[href*=info_village]').each(function() {
    var ssil = $(this).attr('href');
    var coord = $(this).text();
    all = [ ssil.match(/village=\d+/), ssil.match(/\d+$/) ];
    coords = /\s.(\d+)\|(\d+).\s/g.exec(coord);
    
alert(all[0] + all[1] + all[0] + coords[1] + coords[2]);  
  });
});


теперь осталось вывести на страницу без алерта
нужно значения под абзац сунуть, как?

melky 13.06.2011 14:32

создать какой-нибудь span снизу. element - этот span

element.innerHTML = all[0] + all[1] + all[0] + coords[1] + coords[2];


или

$(element).html( all[0] + all[1] + all[0] + coords[1] + coords[2] )

Abraham 13.06.2011 14:50

мне надо после объекта $('#content_value a[href*=info_village]') как ссылку

так нет ничего
$('#content_value a[href*=info_village]').after.html( all[0] + all[1] + all[0] + coords[1] + coords[2] )

это пользовательский скрипт

Abraham 13.06.2011 19:13

Walik help

Abraham 14.06.2011 22:52

ппц подкрался не заметно

нашёл ОООГромный косяк в своём тВарении

1. вариант
$(document).ready(function() {
  var all;
  $('#content_value a[href*=info_village]').each(function() {
    var ssil = $(this).attr('href');
    var coord = $(this).text();
    all = [ ssil.match(/village=\d+/), ssil.match(/\d+$/) ];    

var obzor = (' <a href="javascript:window.location.href=\'/game.php?village=' + all[1] + '&screen=overview\'">tyt</a>');
$('#content_value a[href*=info_village]').after(obzor);
});
});


Вставляет (after) к объекту кол-во ссылок, которое соответствует кол-ву строк
например, если будет 40 строк то к каждой строке прибавится 40 ссылок, если 7 строк, то 7 ссылок
и правильно рабочая ссылка одна(подчёркнута), остальные соответствуют другим строкам

1. ('#content_value a[href*=info_village]') tyt tyt tyt tyt tyt tyt tyt
2. ('#content_value a[href*=info_village]') tyt tyt tyt tyt tyt tyt tyt
3. ('#content_value a[href*=info_village]') tyt tyt tyt tyt tyt tyt tyt
4. ('#content_value a[href*=info_village]') tyt tyt tyt tyt tyt tyt tyt
5. ('#content_value a[href*=info_village]') tyt tyt tyt tyt tyt tyt tyt
6. ('#content_value a[href*=info_village]') tyt tyt tyt tyt tyt tyt tyt
7. ('#content_value a[href*=info_village]') tyt tyt tyt tyt tyt tyt tyt


2. Вариант

$(document).ready(function() {
  var all;
  $('#content_value a[href*=info_village]').each(function() {
    var ssil = $(this).attr('href');
    var coord = $(this).text();
    all = [ ssil.match(/village=\d+/), ssil.match(/\d+$/) ];    

});
var obzor = (' <a href="javascript:window.location.href=\'/game.php?village=' + all[1] + '&screen=overview\'">tyt</a>');
$('#content_value a[href*=info_village]').after(obzor);
});


Если вынести из функции переменную var obzor ... и всё что ниже,
то картина лучше, после каждой строки одна ссылка(то что надо), но она не соответсявует строке, все ссылки соответствуют одной строке, последней

1. ('#content_value a[href*=info_village]') tyt
2. ('#content_value a[href*=info_village]') tyt
3. ('#content_value a[href*=info_village]') tyt
4. ('#content_value a[href*=info_village]') tyt
5. ('#content_value a[href*=info_village]') tyt
6. ('#content_value a[href*=info_village]') tyt
7. ('#content_value a[href*=info_village]') tyt

что не так? где я накасячил?

подправте плиз

з.ы излагал как мог, если что то непонятно выразил, спрашайте

Abraham 16.06.2011 23:18

ау эксперты

Abraham 17.06.2011 23:28

:-E

Abraham 19.06.2011 00:07

профессиОНАЛЫ ау


Часовой пояс GMT +3, время: 07:25.