Как поставить фокус на 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, время: 17:58. |