Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает скрипт (https://javascript.ru/forum/misc/34047-ne-rabotaet-skript.html)

SER 18.12.2012 23:08

Не работает скрипт
 
Есть два похожих кода, но первый работает
$(".previous").click(function(){
        var pr = $('#imgwrape').attr('imgnumber');
        if (pr=="1")
        {
	      var r = 4
        }
        else
        {
        	var r = pr - 1
        };
        $('#imgwrape').html('<img id="imgbigsize" src="img/main/' + r + 'big.jpg">');
        $('#imgwrape').attr('imgnumber', r);
        $('#imgboxname').html('Иллюстрация ' + r + ' из 4');
    });

а второй нет
$('#imgbigsize').click(function(){
            var pr = $('#imgwrape').attr('imgnumber');
            if (pr=="4")
            {
             var nr = 1
            }
            else
            {
             var nr = pr + 2
            };
            $('#imgwrape').html('<img id="imgbigsize" src="img/main/' + nr + 'big.jpg">');
            $('#imgwrape').attr('imgnumber', nr);
            $('#imgboxname').html('Иллюстрация ' + nr + ' из 4');
        });

Объясните, ПОЖАЛУЙСТА, в чем дело!

Margarita 18.12.2012 23:49

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

Deff 19.12.2012 02:02

SER,
Без HTML переключаемого контента вопросы об ошибках - нонсенс

Hoshinokoe 19.12.2012 22:28

SER,

Проблема в этой строке:
var nr = pr + 2

pr - у вас строка и операция сложения для строк есть, поэтому второй аргумент преобразуется тоже в строку. В первом же случае операция минус не существует для строк, только для чисел, поэтому складываются два числа.
var res1 = "222" + 111; // выдаст "222111"
var res2 = "222" - 111; // выдаст 111
alert('res1 = ' + res1 + '\n res2 = ' + res2);
1-й вариант:
преобразовывать значение в число
var pr = parseInt($('#imgwrape').attr('imgnumber'));
2-й вариант (более правильный):
использовать data аттрибут и преобразование делать не прийдется
var pr = $('#imgwrape').data('imgnumber');
...
$('#imgwrape').data('imgnumber', nr);

SER 19.12.2012 22:42

Большо спасибо!


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