Как поставить фокус на id который постоянно меняется?
Добавляю в форму поля input с помощью такой конструкции:
function addField() {
let i = document.querySelectorAll('[name="answers"]').length;
document.getElementById("choice").insertAdjacentHTML('beforeEnd', '<input id="answers['+i+']" type="text" name="answers" value="">');
document.getElementById(answers[i]).focus; // - НЕ работает
}
</script>
В результате получается такой HTML. Это работает. <input name="answers" id="answers[0]" type="text" value=""> <input name="answers" id="answers[1]" type="text" value=""> <input name="answers" id="answers[2]" type="text" value=""> ... <input name="answers" id="answers[100500]" type="text" value=""> Поля добавляются, но фокус на них не ставится. Что то делаю не так. Пробовал и с разными кавычками - не помогло. Как правильно указать идентификатор для нового поля, чтобы оно оказалось в фокусе? |
Цитата:
|
Не понимаю. Как дописать? Скрипт ведь не знает, сколько раз нажмет "добавить" пользователь. Там любая цифра может быть. А конструкцию answers[i] javascript не обрабатывает. В Гугле тоже не нашел примеров с конструкциями типа [i].
|
Попробовал так:
document.getElementById(answers[answers.length - 1]).focus(); Тоже не работает. |
javascript_pupil,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
function addField() {
let i = document.querySelectorAll('[name="answers"]').length;
document.getElementById("choice").insertAdjacentHTML('beforeEnd', '<input id="answers[' + i + ']" type="text" name="answers" value="">');
document.getElementById(`answers[${i}]`).focus();
}
</script>
</script>
</head>
<body>
<div id="choice"></div>
<button type="button" onclick="addField()">add</button>
</body>
</html>
|
Получилось, Большое спасибо! :)
Вопросик: а почему эта конструкция не работает в IE 11? Мне реально интересно. Не так давно столкнулся с тем, что мои старые javascript не работают в новых браузерах. Оказалось, что у M$ были свои (нестандартные) теги, после замены которых скрипты стали работать и в старом IE 11 и в новых браузерах тоже. |
И еще вопрос вот к этому фрагменту: [${i}]
Ок, внутри квадратных скобок индекс нужного нам элемента массива. А что означает ${i}? Откуда там хеш? |
Цитата:
Цитата:
Цитата:
document.getElementById("answers[" + i +"]").focus();
|
Большое спасибо! Стало более-менее понятно. А второй вариант работает и в IE и в Хроме. :)
|
| Часовой пояс GMT +3, время: 03:41. |