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

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 )


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