Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   DOM new node размещение (https://javascript.ru/forum/dom-window/8659-dom-new-node-razmeshhenie.html)

Hron 07.04.2010 19:47

DOM new node размещение
 
Привет js'ерам!
Мне очень интересно решение следующей задачи:
Допустим у нас существует какая-то форма с известным id.
К примеру такая:
<div id="overlay">
     <div>
          <form id = 'forma' method=" " action=" ">
          <input type='file'/>
          <input id= 'ok'type='button' value='OK'/>
          </form>
     </div>
</div>

Нужно ее динамически заполнить различными элементами(button, radio, text,etc.) Для заполнения я воспользовался следующим:
var input = document.createElement("input");
input.setAttribute("type", "button");
input.setAttribute("value", "wow!");
forma.appendChild(input);

Но таким способом кнопка добавляется "в конец", а необходимо, чтобы она добавлялась в определенной позиции на форму, например на расстоянии 30px от нижней границы формы. Я пробовал
input.style.position = 'inherit';
input.style.bottom = '20px';

Но результат меня не обрадовал. Буду рад опробовать ваши идеи.

P.S.: может быть ошибся темой.. вроде бы вопрос интерфейса, но и DOM тут замешан.

x-yuri 07.04.2010 20:37

так это вопрос по верстке. Попробуй либо margin-bottom для кнопки, либо padding-bottom для формы, без всяких position, bottom

и что значит динамически заполнить? Сразу после загрузки страницы? Тогда на сервере это делать надо

Hron 07.04.2010 22:03

динамически.. да, после загрузки, в зависимости от каких-то событий удаляем из формы элементы и заполняем её неким количеством новых (разных по типу) элементов, возможно на самой форме тоже будут кнопки для создания текстовых полей и проч.

Все что вы тут наговорили для меня малоинформативно.. если на padding-bottom я еще могу построить ассоциацию CSS. (слабо представляю решение, но попробую), то о серверной стороне я вообще пока ничего не знаю.
Я думаю, в моем случае добавление/удаление элементов через DOM - это 100% клиент. Но я еще нуб и чаще знаю "как проще", а не как "надо". Что там с сервером?

x-yuri 07.04.2010 22:24

значит не на сервере

Hron 08.04.2010 07:29

Попробовал менять:
-padding у формы в css
-input.style-margin-left = '10px'

input.setAttribute('style','margin-left:20px; margin-top:10px')


Последнее помогло размещать элементы относительно друг друга, но все-таки позиционирование относительно границ формы было бы понятней и проще, спасибо.

x-yuri 08.04.2010 10:55

как же проще, если до сих пор не получилось? Не знаю, что там за форма, но отступы между элементами логичнее регулировать с помощью отступов

setAttribute редко используется, обычно input.style.marginLeft = '20px'...

B~Vladi 08.04.2010 11:37

Тогда уж лучше
input.style.cssText="margin-left:20px; margin-top:10px"


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