Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.11.2010, 20:26
Интересующийся
Отправить личное сообщение для romanco Посмотреть профиль Найти все сообщения от romanco
 
Регистрация: 24.11.2010
Сообщений: 16

Вопрос от новичка
Добрый день
Запутался в следующей задачке.
Нужно сделать счетчик цифр для каждого параграфа p и в конце выводить общее значение. Счетчик делаю через ссылку. Однако общее значение вывести не получается, поскольку переменная сидит внутри функции. Видимо тут нужно как то изменить архитектуру ?
Подскажите как тут можно поступить ?
<p class="eqv"></p>
<p class="eqv"></p>
</p class="eqv"></p>
<label for="amount">Amount:</label>
	<input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;" />

$(document).ready(function() {
			var count = 0;
			$('p.eqv').each(function() {
	  			var $thisParagraph = $(this);
	  			$thisParagraph.append('<a href="#" class="nup">+</a><span>0</span><a href="#" class="ndown">-</a>');
	  			var count = 0;
				$thisParagraph.find('a').click(function(event) {
	  				if (event.target.className == "nup"){
	  					count++;
						}
						else if (event.target.className == "ndown"){
						count = count -1;
					}	
					$thisParagraph.find("span").text(count);	
				});
    		});
    		$('#amount').val(count+11);
    	});
Ответить с цитированием
  #2 (permalink)  
Старый 24.11.2010, 20:28
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 14:18.
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2010, 21:26
Интересующийся
Отправить личное сообщение для romanco Посмотреть профиль Найти все сообщения от romanco
 
Регистрация: 24.11.2010
Сообщений: 16

Убрал внутренний var, все работает и без него. Однако так и не понятно как поступить тут. Можно упростить задачу до такого варианта.
$(function(){
		$('div.eqv a').each(function(){
			var c=0;
			$(this).click(function(){
				c++;
				$(this).text('Some text' + c);
			});
		});
		$('div#sum').text(?);
	});


<body>
	<div class="eqv"><a href="#">1</a></div>
	<div class="eqv"><a href="#">2</a></div>
	<div class="eqv">222</div>
	<div>111</div>
	<div id="sum"></div>
</body>


Допустим функция возвращает какое то значение через return, но и дальше что и как ?
$(function(){
		$('div.eqv a').each(function(){
			var c=0;
			$(this).click(function(){
				c++;
				$(this).text('Some text' + c);
				return c;
			});
		});
		$('div#sum').text(?);
	});

куда девать этот возвращенный с, если функция у нас анонимная.....
И так тоже не работает:
$(function(){
		var b = 0;
		$('div.eqv a').each(function(){
			var c=0;
			$(this).click(function add(){
				c++;
				$(this).text('Some text' + c);
				b =c;
			});
			
		});
		$('div#sum').text(b);
	});
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2010, 23:20
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 14:19.
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2010, 09:33
Интересующийся
Отправить личное сообщение для romanco Посмотреть профиль Найти все сообщения от romanco
 
Регистрация: 24.11.2010
Сообщений: 16

ваш код не работает, потому что в результат запишется с=0, а вызовы функции будут происходить по клику, который будет уже потом. Тут бы применить .live, он почему то у меня не работает. Однако я все же сделал работающий код, его нужно только отрефакторить.
Итак задача, нужно посчитать кол-во кликов по каждой ссылке и отобразить ниже сумму.
$(function(){
		var c=0;
		function aa(){
			c++;
			$(this).text("Click"+c);
			cc();
		};
		var f=0;
		function bb(){
			f++;
			$(this).text("Click"+f);
			cc();
		};
		function cc(){
			$('div#sum').text('Сумма:'+(c+f));
		}		
		$('div.eqv1 a').click(aa);
		$('div.eqv2 a').click(bb);
		
	});

<div class="eqv1"><a href="#">1</a></div>
	<div class="eqv2"><a href="#">1</a></div>
	<div id="sum"></div>

Задача упростилась, поскольку вместо each я вызываю click для конкретного дива и, соответсвенно, вызываю разные функции для каждого дива. Как сделать, что бы это работало в each, пока не придумал.
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2010, 09:50
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 14:20.
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2010, 13:09
Интересующийся
Отправить личное сообщение для romanco Посмотреть профиль Найти все сообщения от romanco
 
Регистрация: 24.11.2010
Сообщений: 16

"код не проверял, если работать не будет просто суммируйте коллекцию значений после выполнения всех действий - делается доп выборка перед $('div#sum').text(с)."

Такого рода идеи ? тогда извините я вас не понял
Ответить с цитированием
  #8 (permalink)  
Старый 26.11.2010, 19:17
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 14:20.
Ответить с цитированием
  #9 (permalink)  
Старый 26.11.2010, 19:19
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 14:20.
Ответить с цитированием
  #10 (permalink)  
Старый 26.11.2010, 20:10
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 14:20. Причина: исправлена ошибка
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос новичка: Как отобразить функцию на экране Delacrua Общие вопросы Javascript 7 05.05.2010 21:51
Вопрос новичка... Aleksew Общие вопросы Javascript 1 14.02.2010 11:26
Вопрос от новичка: сменить тип инпута по клику на флажке Menelion Elensule jQuery 2 23.11.2009 16:28
Вопрос новичка XML "when test" gosha_kap (X)HTML/CSS 1 16.07.2009 11:30
Вопрос новичка по DIV De-Luxis Я не знаю javascript 6 02.06.2009 19:34