@Dimazsever

Как одной строчкой кода одновременно выполнить два действия с элементом?

Можно ли одной строчкой кода удалить текст из элемента и установить фокус на нём?
el.previousSibling.innerText = "".focus();
Код выше не рабочий. Можно сделать двумя строчками. В этом случае будет два обращения к DOM?
el.previousSibling.innerText = "";
el.previousSibling.focus();
  • Вопрос задан
  • 329 просмотров
Пригласить эксперта
Ответы на вопрос 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
1. Я бы ещё понял попытку взять свойство innerText после обращения к методу focus. Но попытка вызвать этот метод у пустой строки?) Это выходит за рамки.

2. Составлять выражения можно, если понимать, что стоит слева от точки. В данном конкретном случае с помощью нативного Javascript ничего не выйдет. Насчёт пустой строки уже выяснили, а метод focus() вернёт undefined.

3. Если вы нацелились на нативный Javascript, то надо знать, что previousSibling вернёт ссылку на предыдущий узел.
Во-первых, его просто может не быть, если элемент — первый ребёнок.
Во-вторых, этот узел может быть текстовой нодой, появившейся в результате форматирования. Ей-то точно фокус не передать.
Для получения ссылки на предыдущий элемент в интерфейсе Node есть свойство previousElementSibling.

4. Можете пока писать с помощью jQuery, где многие методы возвращают ссылку на абстрактный объект, отвечающий за найденный элемент. Типа такого:

$('#test').prev().text('').focus();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы