Jump to content
  • 0

Динамичное создание элементов


IceBars
 Share

Question

Код:

<div id='wst_sozd_sob'>тест<form method='post' action='dob_soob.php'><tbody id='wst_sob'> f</tbody></form></div>".$wyw_text_tem;


<script type='text/javascript'>
var sloy=document.getElementById('wst_sob');
var form=document.createElement('INPUT');
sloy.appendChild(form);

Мне пишет "неожиданный вызов метода", я вроде ведь все правильно делаю...

П.С: хочу сделать, чтобы когда щелкаешь на кнопке еще несколько форм появлялись...

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Если я правильно понял, ты хочешь сделать что-то подобное:

<form method='post' action='dob_soob.php' id='myform'>
</form>
<input type='button' value="add" onclick="add()">

<script type='text/javascript'>
function add()
{
var sloy=document.getElementById('myform');
var newInput=document.createElement('input');
sloy.appendChild(newInput);
}
</script>

Link to comment
Share on other sites

  • 0

Я пытаюсь создать динамическое добавление формы - selecta чтобы в опшионс был нужный текст.

По-разному пытался, ниче не выходит.

<script type='text/javascript'>

function add(){
var table = document.getElementById('contacts');

var tr = document.createElement('TR');
var td1 = document.createElement('TD');

var inp1 = document.createElement('INPUT');
var sel=document.createElement('select');
var op1=document.createElement('option');
var op2=document.createElement('option');


table.appendChild(tr);
tr.appendChild(td1);

td1.appendChild(inp1);
td1.appendChild(sel);
sel.appendChild(op1);
sel.appendChild(op2);
op1.setAttribute('value', 'ok');
op1.setAttribute('id', 'ptpt');

var text=document.createTextNode('Бар');

sel.insertBefore(text, sel.childNodes[1]);
sel.childNodes[1].childNodes[2].nodeValue='pt';
//sel.childNodes[1].setAttribute('id', 'drpt');

alert(sel.childNodes[1].nodeValue);

//sel.childNodes[1].childNodes[0].nodeValue='pt';
//document.getElementById('ptpt').childNodes[1].nodeValue='pt';
op2.setAttribute('value', 'neok');

//document.getElementById('tt').childNodes[0].nodeValue='pt';
//alert(document.getElementById('test').childNodes[1].childNodes[0].nodeValue);
}

</script>
<table>
<tbody id="contacts">
<tr>
<td colspan="3"><input type='button' onClick="add();">Добавьте контакт</td>
</tr>
</tbody>
</table>
<select name='t' id='test'>
<option value=1 id='tt'>1</option>
<option value=2 id='dd'>2</option>
</select>

Link to comment
Share on other sites

  • 0

Все не надо, сам разобрался.

<script type='text/javascript'>

function add(){

var table = document.getElementById('contacts');

var tr = document.createElement('TR');

var td1 = document.createElement('TD');

var inp1 = document.createElement('INPUT');

var sel=document.createElement('select');

var op1=document.createElement('option');

var op2=document.createElement('option');

table.appendChild(tr);

tr.appendChild(td1);

td1.appendChild(inp1);

td1.appendChild(sel);

sel.appendChild(op1);

sel.appendChild(op2);

op1.setAttribute('value', 'ok');

op1.setAttribute('id', 'ptpt');

var text=document.createTextNode('Бар');

sel.insertBefore(text, sel.childNodes[1]);

//sel.childNodes[1].childNodes[0].nodeValue='pt';

//sel.childNodes[1].setAttribute('id', 'drpt');

//alert(sel.childNodes[1].nodeValue);

//var x=sel.childNodes[1];

op2.setAttribute('value', 'neok');

//sel.childNodes[1].insertBefore(text, x.childNodes[1]);

//sel.childNodes[1].insertBefore(text

var x=document.getElementsByTagName('option');

//alert(document.getElementById('test').childNodes[1].childNodes[0].nodeValue);

//alert(document.getElementById('test').childNodes[1].childNodes[0].nodeValue);

//document.getElementById('test').childNodes[1].childNodes[0].nodeValue=3;

//document.getElementById('test').childNodes[1].insertBefore(text, document.getElementById('test').childNodes[1].childNodes[0]);

ds=document.createElement('div');

contacts.appendChild(ds);

ds.setAttribute('id', 'ypa');

ttt=document.createElement('nodeValue');

ds.appendChild(ttt);

ds.childNodes[0].nodeValue='t';

ds.insertBefore(text, ds.childNodes[0]);

//alert(document.getElementById('ypa').childNodes[0].nodeValue);

sel.appendChild(ds);

op1.appendChild(ttt);

op1.insertBefore(text, op1.childNodes[0]);

//document.getElementById('test').childNodes[1].insertBefore(text, document.getElementById('test').childNodes[1].childNodes[0]);

//x[0].insertBefore(text, x[0]);

//alert(x[0].childNodes[0]);

}

Добавьте контакт

2

Link to comment
Share on other sites

  • 0

Что касается моего кода, то он работает везде, кроме IE )

Добавил input к форме и вс? заработало:

<form method='post' action='dob_soob.php' id='myform'>
<input>
</form>
<input type='button' value="add" onclick="add()">

<script type="text/javascript">

function add()
{
var sloy=document.getElementById('myform');
var newInput=document.createElement('input');
sloy.appendChild(newInput);
}
</script>

Что же касается твоего кода, то там несколько ошибок есть.

Я тут набросал что-то, посмотри, может, подойдет:

<script type='text/javascript'>

function add(){
var table = document.getElementById('contacts');

var tr = document.createElement('TR');
var td1 = document.createElement('TD');

var inp1 = document.createElement('INPUT');
var sel=document.createElement('select');
var op1=document.createElement('option');
var op2=document.createElement('option');

var text = document.createTextNode('Первый');
op1.appendChild(text);
text = document.createTextNode('Второй');
op2.appendChild(text);

table.appendChild(tr);
tr.appendChild(td1);


td1.appendChild(inp1);
td1.appendChild(sel);
sel.appendChild(op1);
sel.appendChild(op2);

}

</script>
<table>
<tbody id="contacts">
<tr>
<td colspan="3"><input type='button' onClick="add();">Добавьте контакт</td>
</tr>
</tbody>
</table>
<select name='t' id='test'>
<option value=1 id='tt'>1</option>
<option value=2 id='dd'>2</option>
</select>

Проверял в IE, Opera, Mozilla - вс? вроде адекватно...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy