Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Анимация слайдера. (https://javascript.ru/forum/jquery/54774-animaciya-slajjdera.html)

рони 28.04.2015 19:27

Babyslam,
без = и свойства добавляйте вне обьекта -- строка 4 внутри не видит строку 3

Babyslam 29.04.2015 11:21

Рони,если я Вас правильно понял, то будет(не до конца понял что Вы имеете в веду):
var elWrap = $('#slider');
var radios = $('#rad');
el = elWrap.find('img'),
var Slider = {
   indexImg : 1,
   indexMax : el.length,
   phase : 2000;
    change() : = function(){
  	if (document.getElementsByName('rad')[0].checked == true) 
    { 
        var next = el.eq(indexImg-1);
     	el.not(next).animate({"left": v ? -640 : 640 ,opacity: 1},800);
        next.css({left: v ? 620 : -620}).animate({"left": 20, opacity: 1}, 800)
    }
    else if(document.getElementsByName('rad')[1].checked == true) 
    {
        el.stop(true,true);
        var next = el.eq(indexImg-1);
        next.appendTo(elWrap).css({left: v ? 620 : -620}).animate({"left": 20}, 800)
    }
    else
    {
        el.stop(true,true);
        var next = el.eq(indexImg-1);
el.not(next.animate({opacity: 1}, 800)).animate({opacity: 0},800);
    } 
}
}

Или сделать так:
el =  $('#slider')('img');
var Slider = {
   indexImg : 1,
   indexMax : el.length,
   phase : 2000;
    change() : = function(){
  	if (document.getElementsByName($('#rad'))[0].checked == true) 
    { 
        var next = el.eq(indexImg-1);
     	el.not(next).animate({"left": v ? -640 : 640 ,opacity: 1},800);
        next.css({left: v ? 620 : -620}).animate({"left": 20, opacity: 1}, 800)
    }
    else if(document.getElementsByName($('#rad'))[1].checked == true) 
    {
        el.stop(true,true);
        var next = el.eq(indexImg-1);
        next.appendTo($('#rad')).css({left: v ? 620 : -620}).animate({"left": 20}, 800)
    }
    else
    {
        el.stop(true,true);
        var next = el.eq(indexImg-1);
el.not(next.animate({opacity: 1}, 800)).animate({opacity: 0},800);
    } 
}
}

рони 29.04.2015 12:06

Цитата:

Сообщение от Babyslam
change() : = function(){

:-?

рони 29.04.2015 12:10

Babyslam,
примерно
var Slider = {
   elWrap : $('#slider'),
   el : Slider['elWrap'].find('img'),
   indexImg : 1,
   indexMax : Slider['el'].length,
   phase : 2000,
   radios : $('#rad'),
   change : function(){
  	if (document.getElementsByName('rad')[0].checked == true)
    {
        var next = el.eq(indexImg-1);
     	el.not(next).animate({"left": v ? -640 : 640 ,opacity: 1},800);
        next.css({left: v ? 620 : -620}).animate({"left": 20, opacity: 1}, 800)
    }
    else if(document.getElementsByName('rad')[1].checked == true)
    {
        el.stop(true,true);
        var next = el.eq(indexImg-1);
        next.appendTo(elWrap).css({left: v ? 620 : -620}).animate({"left": 20}, 800)
    }
    else
    {
        el.stop(true,true);
        var next = el.eq(indexImg-1);
el.not(next.animate({opacity: 1}, 800)).animate({opacity: 0},800);
    }
}
}

Babyslam 29.04.2015 13:07

рони
В том ключе действую?

var Slider = {
   elWrap : $('#slider'),
   el : Slider['elWrap'].find('img'),
   indexImg : 1,
   indexMax : Slider['el'].length,
   phase : 2000,
   radios : $('#rad'),
   Slider['elWrap'].append : ('<span class="next"></span><span class="prev"></span>'),
   btnNext = $('span.next'),
   btnPrev = $('span.prev');
   change : function(){
  	if (document.getElementsByName('rad')[0].checked == true)
    {
       var next = el.eq(indexImg-1);
     	el.not(next).animate({"left": v ? -640 : 640 ,opacity: 1},800);
        next.css({left: v ? 620 : -620}).animate({"left": 20, opacity: 1}, 800)
    }
    else if(document.getElementsByName('rad')[1].checked == true)
    {
        el.stop(true,true);
        var next = el.eq(indexImg-1);
        next.appendTo(elWrap).css({left: v ? 620 : -620}).animate({"left": 20}, 800)
    }
    else
    {
        el.stop(true,true);
        var next = el.eq(indexImg-1);
el.not(next.animate({opacity: 1}, 800)).animate({opacity: 0},800);
    }
}
    bnnext: function(){
    btnNext.click(function() {
        window.clearTimeout(timer)
		indexImg++;
		if(indexImg == indexMax) {
         
           indexImg = 1;
		}
		Slider.change(true);
        
	});
}
    bnprev: function() { 
    btnPrev.click(function() {
        window.clearTimeout(timer)
		indexImg--;
		if(indexImg < 1) 
        {
           indexImg = indexMax;

		}
		Slider.change();
	});
                 }

    
}

И
var next = el.eq(indexImg-1);
нужно ли это менять на
next : el.eq(indexImg-1);

рони 29.04.2015 13:25

Babyslam,
пока у вас туго, но лучше бы это сделал знающий человек, я могу это сделать, но очень по дилетански (как правильно, делают такие вещи я просто не знаю). а так смотрите ошибки в консоли и думайте.

Babyslam 29.04.2015 13:43

рони,да очень туго идет,читаю про объекты и методы,но как-то не очень помогает.
Не могу понять самой сути что и как взаимодействует по этому и туго.

Babyslam 19.05.2015 16:28

Все мучаюсь с объектами и свойствами. Есть таймер рабочий,но при добавление объекта slider, таймер не работает.
Про просмотре консоли консоль пишет что elWrap не определенно,ну и дальше следует что el нету и indexMax и next. http://jsfiddle.net/u6onbo5p/3/


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