Вывод данных в инпут
Привет всем!
Есть три поля: <div id="infoWrapper"> <p>Ширина: <input type="text" id="width"></p> <p>Высота: <input type="text" id="height"></p> <p>Площадь: <input type="text" id="area"></p> </div> Нужно выводить значения в данные поля при действии пользователя. Чтобы выводить значения в каждое поле я сохраняю каждый html-элемент поля в его переменную. Иногда нужно вывести значение только в 1 поле, иногда - в 2-х, иногда в 3-х, по-этому я сделал некую универсальную фун-я render(), в которую передаётся объект и в которой обрабатываются все случаи: function render (data) { for ( var key in data ) { if ( key == "width" ) { widthInput.val( data[key] ); } if ( key == "height" ) { heightInput.val( data[key] ); } if ( key == "area" ) { areaInput.val( data[key] ); } } } Это получается какой-то ужас, а если добавятся ещё 5 полей - функция растянется и тд. И выглядит некрасиво и вообще, пока это простые 3 поля, если усложнить всё - будет головная боль. Как можно по-нормальному организовать вывод значений? Может как-то используя шаблонизаторы? Посоветуйте. |
lammeR,
:-? function render (data) { var Input, key; for (key in data) { if (Input = document.getElementById(key)) { Input.value = data[key]; } } } |
рони, дело в том, что id-названия другие, типа widthRoomInput, это здесь я написал для простоты примера. Ещё минус в том, что каждый раз надо искать элементы по id. И ещё забыл указать, что значения у меня выводятся при движении мышки - потому я и сохраняю инпуты в переменные.
|
Цитата:
<html> <head> </head> <body> <div id="infoWrapper"> <p>Ширина: <input type="text" id="width"></p> <p>Высота: <input type="text" id="height"></p> <p>Площадь: <input type="text" id="area"></p> </div> <script type="text/javascript"> var myInputs = {}; Array.prototype.forEach.call(document.querySelectorAll('input'), function (ths) { myInputs[ths.getAttribute('id')] = ths; }) console.log(myInputs); </script> </body> </html> тогда ваша функция будет выглядеть как то так: function render (data) { for ( var key in data ) { myInputs[key].value = data[key]; } } |
skrudjmakdak, в итоге я так и сделал.
|
Часовой пояс GMT +3, время: 19:31. |