Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вставить элемент на определенное место (https://javascript.ru/forum/misc/30749-vstavit-ehlement-na-opredelennoe-mesto.html)

bpystep 14.08.2012 14:59

Вставить элемент на определенное место
 
Добрый день.
существует вот такая конструкция:
<form mothod="post" action="admin.php" id="forma">
    <div><input type="text" id="id_1"></div>
    <div><input type="text" id="id_2"></div>
    <a href="#" onClick="addProperty()">Добавить</a>
</form>


Задача состоит в том чтобы по клику вставлялся еще один
<div><input type="text" id="id_3"></div>


Но вставлялся после второго дива: т.е. получалось бы так:

<form mothod="post" action="admin.php" id="forma">
    <div><input type="text" id="id_1"></div>
    <div><input type="text" id="id_2"></div>
    <div><input type="text" id="id_3"></div>
    <a href="#" onClick="addProperty()">Добавить</a>
</form>


function addProperty() {
	var form = event.target.parentNode;
	while (!(form instanceof HTMLFormElement)) {
		form = form.parentNode;
	}
	
	var elem = document.createElement('div');
		elem.style.border = '1px solid #ff0000';
		elem.innerHTML = 'blablabla';
	form.appendChild(elem);
}


как указать позицию дочернего элемента?
Может быть взять все дочерние элементы, и с помощью массива переставить местами последний(elem) и предпоследний элемент(<a></a>)?

ksa 14.08.2012 15:10

Цитата:

Сообщение от bpystep (Сообщение 197461)
Добрый день.
существует вот такая конструкция:
<form mothod="post" action="admin.php" id="forma">
    <div><input type="text" id="id_1"></div>
    <div><input type="text" id="id_2"></div>
    <a href="#" onClick="addProperty()">Добавить</a>
</form>

Сама по-себе уже не удачная конструкция для вставки... Гораздо удобнее такая

<form mothod="post" action="admin.php" id="forma">
    <div id='container'>
         <div><input type="text" id="id_1"></div>
         <div><input type="text" id="id_2"></div>
    </div>
    <a href="#" onClick="addProperty()">Добавить</a>
</form>


Т.о. просто добавляя элемент в #container ты получаешь нужный эффект. :)

bpystep 14.08.2012 15:24

Спасибо, все получилось так как хотел! +

ksa 14.08.2012 15:26

bpystep, но можно сделать и на твоей конструкции... :D

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function addProperty() {
	var of=document.getElementById('forma');
	var all=of.getElementsByTagName('div').length;
	var oa=of.getElementsByTagName('a')[0];
	var od=document.createElement('div');
	var o=document.createElement('input');
	o.type='text';
	o.id='id_'+(++all);
	od.appendChild(o);
	of.insertBefore(od,oa);
}
</script>
</head>
<body>
<form mothod="post" action="admin.php" id="forma">
	<div><input type="text" id="id_1"></div>
	<div><input type="text" id="id_2"></div>
	<a href="#" onClick="addProperty()">Добавить</a>
</form>
</body>
</html>

bpystep 14.08.2012 16:03

Спасибо что потраченное время, но мне очень хорошо подходит вариант с контейнером, просто и понятно, и получилось все универсально (под другие скрпты хорошо подошло).

ksa 14.08.2012 16:06

Цитата:

Сообщение от bpystep
хорошо подходит вариант с контейнером, просто и понятно

Разумеется. :yes:


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