Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вывести <input> (https://javascript.ru/forum/misc/53163-kak-vyvesti-input.html)

veltony 23.01.2015 12:09

Как вывести <input>
 
Подскажите, пожалуйста, как вывести значение которое было введено в поле <input>.

<input id="name" type='text' name='name'>

<div id="name"></div>

losos100 23.01.2015 12:16

<html>
<head>
</head>
 
<body>

<input id="name" type='text' name='name'>

<div id="name"></div>
<script>
a=document.querySelectorAll("#name")
a[0].oninput=function(){a[1].innerHTML=this.value}
</script>
</body>
 
</html>

veltony 23.01.2015 12:35

Большое спасибо.

ruslan_mart 23.01.2015 13:54

losos100, не учи новичков плохому, объявляй переменные с var. ID уникален, он не может быть более, чем один. И искать ID через querySelectorAll смысла нет, ибо такого элемента не может быть более, чем одного.

devote 23.01.2015 14:03

Цитата:

Сообщение от Ruslan_xDD
И искать ID через querySelectorAll смысла нет

Цитата:

Сообщение от Ruslan_xDD
ибо такого элемента не может быть более, чем одного.

<div id="haha">1</div>
<div id="haha">2</div>
<script>
  alert("Number of elements found: " + document.querySelectorAll('#haha').length);
</script>

danik.js 23.01.2015 14:05

devote, у рукожопов и не такое может быть ))

devote 23.01.2015 14:13

Цитата:

Сообщение от danik.js
devote, у рукожопов и не такое может быть ))

енто ты про кого? не совсем понял

А по ID, например я не нашел в спеке запрета использовать один ID на нескольких элементах. Там есть лишь рекомендация. Но никак не запрет. И эта рекомендация была написана по причине того, что раньше не было возможности искать коллекцию по ID. Так как давно придумали метод getElementById который возвращает лишь первый найденный, но с появлением метода querySelectorAll эта рекомендация не особо то и актуальна

ruslan_mart 23.01.2015 14:15

devote, найдёт то понятное дело, что найдёт, ведь тут идёт поиск по селектору, а не по ID. Но по логике такого быть не должно, ID должен быть один.
А пример лосося100 - изврат.

losos100 23.01.2015 14:17

Ruslan_xDD,
Ты в код ТСа загляни, для разнообразия.

danik.js 23.01.2015 14:38

Цитата:

Сообщение от devote
по причине того

Ок. Эта причина не актуально. А как там написано разруливать document.getElementById - первый или последний возвращать?
А к какому элементу скролить при переходе по url#anchor?
А на какой элемент ссылаться должна магическая переменная window.myId? А на какой элемент должна ссылаться метка <label for> ?

devote 23.01.2015 17:54

danik.js,
первый совпавший... просто берут самый верхний в списке и его юзают..

Deff 23.01.2015 22:05

Цитата:

Сообщение от danik.js
А как там написано разруливать document.getElementById - первый или последний возвращать?
А к какому элементу скролить при переходе по url#anchor?
А на какой элемент ссылаться должна магическая переменная window.myId? А на какой элемент должна ссылаться метка <label for> ?

Ну меня достаточно часто такая ситуация встречается, поскольку на бесплатных форумах ставят кучку актуальных скриптов каждый админ своё и что-то общее с поддержки, частенько придумывают id которые совпадают. По опыту, браузеры обращаются к первому элементу на странице с требуемым id

veltony 24.01.2015 21:42

Решил использовать data-target в инете нашел.
<input data-target="#name">
<div id="name"></div>
Все работает, даже в IE.
Хотел поинтересоваться у специалистов насколько это правильно и какие здесь есть подводные камни.

С ув.

danik.js 24.01.2015 22:42

Цитата:

Сообщение от veltony
data-target в инете нашел

Это пользовательские атрибуты data-*

data-pizdata
data-borodata

Можешь назвать как хочешь, главное чтобы начиналось с data-.
На самом деле можешь игнорировать это правило, проблема будет только в невалидности HTML и возможном конфликте имен.

Пользовательские атрибуты работают везде, даже в IE5.5
Правда в новых (HTML5) браузерах к ним упрощен доступ из js:

var input = document.querySelector('input');
var target = input.dataset.target; // вместо input.getAttribute('data-target')


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