Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Переменная из значения переменной (https://javascript.ru/forum/jquery/12698-peremennaya-iz-znacheniya-peremennojj.html)

Murph 29.10.2010 16:18

Переменная из значения переменной
 
Добрый день,

Есть переменные:

var num1 = 0;
var num2 = 0;
var num3 = 0;


Есть картинки:

<img src="..." id="num1">
<img src="..." id="num2">
<img src="..." id="num3">


При левом клике из картинок вытаскиваем ID:

$('img').live('click', function(e) {
     var num = $(this).attr('id');
}


В чем собственно вопрос. Мне нужно из полученого ID сделать переменную и добавить к ней 1.

Очевидно
$('img').live('click', function(e) {
     var num = $(this).attr('id');
     num++;
}

не дает никаких результатов.

Как можно еще такое реализовать?

Заранее благодарю.

B@rmaley.e><e 29.10.2010 16:30

Зачем Ва каждый ID в отдельной переменной? Используйте массив.
var ids = [];
$('img').live('click', function(e) {
     ids.push($(this).attr('id')); // если нужно не допускать существования одинаковых ID в массиве, добавить проверку
}

Murph 29.10.2010 17:31

Так как я с массивами раньше не сталкивался вылезли новые проблемы. Попорядку:
var offence = []; // создаем массив offence
	$('img').live('click', function(e) { //на левый клик
		var skill = $(this).attr('id'); //вытаскиваем ID и записываем в переменную skill
		if (jQuery.inArray(skill, offence) == -1) { //Если в массиве нет такого.
                      offence.push(skill, i++); //вписываем и добавляем 1.
                }
	});


Все-бы нечего, но тут возникает новая проблемка. Как изменить этот массив при повторном нажатии?

После первого клика мы получаем:
[ "skill", 1 ]

При повторном нажатии нужно получить
[ "skill", 2 ]


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

Счелкаем на первую картинку два раза и три раза на третью, получаем:
[ "imgID1", 2, "imgID2", 3 ]

micscr 29.10.2010 17:32

Можешь обойтись и без этих переменных, а хранить эти счетчики "у самих картинок":
// начальные установки
$('img').data('num', 0);
// событие
$('img').live('click', function(e) {
     var $this = $(this);
     $this.data('num', $this.data('num') + 1);
}

micscr 29.10.2010 17:40

Или можно также объектом :
var offence = {num1:0, num2:0, num3:0}; // создаем объект offence
    $('img').live('click', function(e) { //на левый клик
        var skill = $(this).attr('id'); //вытаскиваем ID и записываем в переменную skill
        offence[skill] = offence[skill] + 1;
    });

Murph 29.10.2010 17:48

Все спасибо, сделал то что хотел, объектом.


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