Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать onFocus, если объектов несколько? (https://javascript.ru/forum/misc/80114-kak-sdelat-onfocus-esli-obektov-neskolko.html)

voraa 29.04.2020 13:19

Цитата:

Сообщение от laimas
Удобно, только имя функции в данном случае иное было бы как минимум.

Правильно.
Есть как бы три действия. add, remove, toggle.
Если с помощью последнего можно делать все, то какой смысл в существовании первых двух?

Цитата:

Сообщение от laimas
А если не хочется и ладно, но ведь и борщ не обязательно любят все, но это не значит, что он как блюдо не имеет право на существование.

Совершенно согласен.
Много чего есть, но это не значит, что этим надо пользоваться.
Я тут недавно разбирал и переделывал старый код на паскале. Я ошалел от with. Кому то это было удобно.
А with вроде еще и javascript остался. Правда не помню, что бы им кто то пользовался. Неужели кому то этот оператор неудобен и непонятен :)

nastya97core 02.05.2020 12:58

подскажите, а как узнать через this, на какой по счёту элемент нажал человек?

qs(".form-input").forEach(el => { 
el.onclick = function(){
console.log(this.........);
}
});

рони 02.05.2020 13:17

nastya97core,
qs(".form-input").forEach((el, i)=> { 
el.onclick = function(){
console.log(i);
}
});

Malleys 02.05.2020 15:58

Цитата:

Сообщение от voraa
Есть функция функция appendChild(node), а чего бы ей не прикрутили еще один параметр, что бы она могла удалять элемент?
а.appendChild(b) - добавляет элемент
а.appendChild(b, false) - удаляет элемент

Почему метод, который называется «вставить ребёнка», должен удалять ребёнка? Для этого есть «убрать ребёнка» — removeChild. А вот если говорить про вставку/извлечение ребёнка одним методом, то как раз подошёл бы метод toggleChild, который мог бы в качестве второго параметра принимать булево значение, чтобы определить, так всё-таки вставить или извлечь ребёнка, что было бы полезно при реализации всяких переключателей.

Цитата:

Сообщение от laimas
а если 7-11 заменить на classList.toggle ?

Там можно только один toggle во всём примере!

Цитата:

Сообщение от voraa
И что в этом хорошего?

Т. е. у тебя везде по две кнопки — чтобы включить компьютер ты нажимаешь на одну кнопку, а чтобы выключить на другую? А у дверного звонка тоже две кнопки? Одна включает звонок, а другая выключает? Унитаз с двумя кнопками?

Цитата:

Сообщение от laimas
Это уже привередливость, а не доводы. А если не хочется и ладно, но ведь и борщ не обязательно любят все

Так нет же, очевидно, что посимвольная оплата! Это у него такие хитрые планы по зарабатыванию. А на toggle разве много заработаешь?

Цитата:

Сообщение от voraa
Много чего есть, но это не значит, что этим надо пользоваться.

Цитата:

Сообщение от voraa
старый код на паскале

Если ты откроешь секту программистов, то у тебя будут толпа преданных поклонников, которые будут разбирать твою старую писанину и прославлять твоё имя, платить 25% за твои откровения.

Цитата:

Сообщение от voraa
Если с помощью последнего можно делать все, то какой смысл в существовании первых двух?

Если нужно именно добавить, а не переключить. Если нужно только удалить, а не переключать. Всё-таки классы и элементы это тебе не унитаз!

рони 02.05.2020 18:37

:write:
<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
.form-input:focus+label, .form-input.active+label{
     color: #FF00FF;
}
.form-input+label {
     color: #FFFFFF;
}
</style>
<script>
  addEventListener("blur", ({target}) => {
         if(target.closest && target.closest(".form-input"))  target.classList.toggle("active", !!target.value.trim())
  }, true)
</script>
</head>
<body>
<input type="text" class="form-input">
<label for="">выбрано</label>
<input type="text" class="form-input">
<label for="">выбрано</label>
<input type="text" class="form-input">
<label for="">выбрано</label>
<input type="text" class="form-input">
<label for="">выбрано</label>
<input type="text" class="form-input">
<label for="">выбрано</label>
</body>
</html>

laimas 03.05.2020 09:12

рони,
trim бы тоже не помешал. )

рони 03.05.2020 09:30

laimas,
ок. добавил trim()

laimas 03.05.2020 09:48

И достаточно просто target.value.trim(), ибо возврат "пусто" тоже самое что false, иначе true.


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