Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Стрелочные функции (https://javascript.ru/forum/dom-window/80115-strelochnye-funkcii.html)

Сергей Ракипов 29.04.2020 06:32

Стрелочные функции
 
Я пока ими не пишу, в будущем обязательно

но не могу понять что я не правильно написал

сначала стрелочная, она работает, потом я ее переписал как мне понятнее и она не работает.

let activeSlide = n => {
	for(slide of slides){
		slide.classList.remove("active");
	}
	slides[n].classList.add("active");
}

let nextSlide = () => {
	if(index == slides.length -1){
		index = 0;
		activeSlide(index);
	}
	else{
		index++;
		activeSlide(index);
	}
}

next.addEventListener("click", nextSlide);





let activeSlide = function(n){
	for(let i=0; i<slides.length; i++){
		slides.classList.remove("active");
	}
	slides[n].classList.add("active");
}

let nextSlide = function(){
	if (index == slides.length - 1){
		index = 0;
		activeSlide(index);
	}
	else{
	index++;
	activeSlide(index);
	}
}

next.addEventListener("click", nextSlide);

Aetae 29.04.2020 06:37

slides.classList.remove("active");
->
slides[i].classList.remove("active");

Сергей Ракипов 29.04.2020 06:54

Цитата:

Сообщение от Aetae (Сообщение 523533)
slides.classList.remove("active");
->
slides[i].classList.remove("active");

то есть нужно было создать массив и поместить значение i

Сергей Ракипов 29.04.2020 06:55

Цитата:

Сообщение от Aetae (Сообщение 523533)
slides.classList.remove("active");
->
slides[i].classList.remove("active");

А я вот еще до конца не понимаю зачем в аргументы или параметры, я не знаю как точно это называет поместили n

voraa 29.04.2020 07:34

Цитата:

Сообщение от Сергей Ракипов (Сообщение 523534)
то есть нужно было создать массив и поместить значение i

Массив уже есть. Он называется slides.
Если вы используете цикл for (i=..., то к элементу массива надо обращаться slides[i] (стр 27)

Сергей Ракипов 29.04.2020 07:50

dot.forEach((item, indexDot) => {
	item.addEventListener("click", () =>{
		index = indexDot;
		activeSlide(index);
		activedots(index);
	})
})





dot.forEach((item, indexDot) function(){
	item.addEventListener("click", function(){
		index = indexDot;
		activeSlide(index);
		activedots(index);
	})
})


Вот тут тоже не могу увидеть ошибку

voraa 29.04.2020 07:57

dot.forEach( function (item, indexDot){
    item.addEventListener("click", function(){
        let index = indexDot; // Зачем?
        activeSlide(index); //  activeSlide( indexDot)
        activedots(index); // activedots(indexDot)
    })
})

рони 29.04.2020 08:01

Сергей Ракипов,
строка 13 параметры функции отсутствуют, function( здесь пусто!!!).

Сергей Ракипов 29.04.2020 08:02

voraa,
А почему нужно function в начало нужно было поставить
и там у вас скобки не хватило, но я вставил.

Сергей Ракипов 29.04.2020 08:03

Цитата:

Сообщение от рони (Сообщение 523540)
Сергей Ракипов,
строка 13 параметры функции отсутствуют, function( здесь пусто!!!).

не понял

рони 29.04.2020 08:04

Цитата:

Сообщение от Сергей Ракипов
не понял

(item, indexDot) function() так неправильно
function (item, indexDot) так верно

Сергей Ракипов 29.04.2020 08:05

Цитата:

Сообщение от voraa (Сообщение 523539)
let index = indexDot; // Зачем?

Это как я понял, нужно индексу приводить значение, но пока слабо понимаю

Все постепенно, не загружаю себя

voraa 29.04.2020 08:05

Цитата:

Сообщение от Сергей Ракипов (Сообщение 523541)
voraa,
А почему нужно function в начало нужно было поставить
и там у вас скобки не хватило, но я вставил.

Потому, что функции в javascript так определяются
function (параметры) {тело}

Сергей Ракипов 29.04.2020 08:05

Цитата:

Сообщение от рони (Сообщение 523543)
(item, indexDot) function() так неправильно
function (item, indexDot) так верно

это я увидел, просто не понимаю логику синтекса

voraa 29.04.2020 08:14

dot.forEach( )
В forEach надо передать функцию, которая будет применяться к каждому элементу.
Вот мы и пишем эту функцию

function (item, indexDot){
    item.addEventListener("click", function(){
        activeSlide(indexDo);
        activedots(indexDo);
    })
}

Сергей Ракипов 29.04.2020 08:16

Все понял, спасибо за помощь

Сергей Ракипов 30.04.2020 09:03

У меня не хватает знание синтаксис помогите переписать на "нормальный старый" вид

function parallax(event){
	this.querySelectorAll(".layer").forEach(layer => {
		let speed = layer.getAttribute("data-speed");
		layer.style.transform = `translateX(${event.clientX*speed/1000}px)`
	});
}

document.addEventListener("mousemove", parallax);


вот это
(layer => {
let speed = layer.getAttribute("data-speed");
`translateX(${event.clientX*speed/1000}px)`

Aetae 30.04.2020 09:27

https://es6console.com/k9meb3ie/
Вставляй свой код, тыкай Transform, и отстань от нас.
Лучше конечно изучи javascript, но тут похоже всё гибло.

рони 30.04.2020 09:28

Сергей Ракипов,
layer =>

заменить на
function(layer)

Сергей Ракипов 30.04.2020 10:51

Цитата:

Сообщение от Aetae (Сообщение 523640)
https://es6console.com/k9meb3ie/
Вставляй свой код, тыкай Transform, и отстань от нас.
Лучше конечно изучи javascript, но тут похоже всё гибло.

как понять гибло?

Сергей Ракипов 30.04.2020 10:52

Цитата:

Сообщение от рони (Сообщение 523641)
Сергей Ракипов,
layer =>

заменить на
function(layer)

я пробовал сам но думал что layer это название функции, а это оказывается его параметр

Сергей Ракипов 30.04.2020 13:43

Не понимаю логику синтекса
"translateY(" + event.clientY * speed/1000 + "px)"

Могу понять первые ковычки, но не могу понять почему так вторые расположены

рони 30.04.2020 15:56

Сергей Ракипов,
задача вырезать число и заменить на переменную.
было
"translateY(10px)"
жмак
"translateY( px)"
тумк
"translateY(" "px)"
вжик
"translateY(" + "px)"
"translateY(" + number + "px)"
"translateY(" + event.clientY * speed/1000 + "px)"

Сергей Ракипов 30.04.2020 16:15

Цитата:

Сообщение от рони (Сообщение 523654)
Сергей Ракипов,
задача вырезать число и заменить на переменную.
было
"translateY(10px)"
жмак
"translateY( px)"
тумк
"translateY(" "px)"
вжик
"translateY(" + "px)"
"translateY(" + number + "px)"
"translateY(" + event.clientY * speed/1000 + "px)"


Все понял, я просто думал, вжмак, вжмак, а потом вжик ))))
Спасибо ))

Malleys 30.04.2020 17:30

Сергей Ракипов, рони,
было
"translateY(10px)"
динь
`translateY(10px)`
дррррррррррррррр-др-др-др-др
`translateY(${}px)`
потом этот ваш вжик
`translateY(${number}px)`
`translateY(${event.clientY * speed / 1000}px)`

Сергей Ракипов 30.04.2020 17:59

Цитата:

Сообщение от Malleys (Сообщение 523657)
Сергей Ракипов, рони,
было
"translateY(10px)"
динь
`translateY(10px)`
дррррррррррррррр-др-др-др-др
`translateY(${}px)`
потом этот ваш вжик
`translateY(${number}px)`
`translateY(${event.clientY * speed / 1000}px)`

не вижу не одной понятной буквы, вы говорите на джаквери?

рони 30.04.2020 18:06

Сергей Ракипов,
Шаблонные строки

рони 30.04.2020 18:07

Сергей Ракипов,
Кавычки

Сергей Ракипов 01.05.2020 03:42

рони,
Спасибо это очень полезно


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