Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: document.getElementById("constructor").innerHTML
 
 автор: mixer   (10.12.2007 в 14:18)   письмо автору
 
 

Есть код! Рабочи!

<html>
<head>
<script language='JavaScript' type='text/javascript'>
var id=0;
function add_field()
{
id += 1;
text="<table><tr><td><input type='text' name='text["+id+"]'></td><td><textarea name=textarea["+id+"]' rows='3' cols='50'></taxtarea></td></tr></table>";
document.getElementById("constructor").innerHTML = document.getElementById("constructor").innerHTML + text;
}
</script>
<head>
<body>

<form action='add.php' method='post'>
<input type='button' onclick='add_field()' value='добавить'>&nbsp;<input type='submit'><br>
<div id='constructor'>
</div>
</form>

</body>
</html>


проблема в такого рода: при добавлении новых полей, текст что был введен в предыдущих полях исчезает ((( как сделать так чтобы он не исчезал!

   
 
 автор: MIchail1982   (10.12.2007 в 14:21)   письмо автору
 
   для: mixer   (10.12.2007 в 14:18)
 


document.getElementById("constructor").innerHTML += text;

   
 
 автор: mixer   (10.12.2007 в 14:29)   письмо автору
 
   для: MIchail1982   (10.12.2007 в 14:21)
 

((( не, это получается немного упрощенная версия того что у меня уже есть!
жму "добавить" появлются 2 поля ввожу в них любой текст жму опять "добавить" появляются еще 2 поля а текст в предыдущих двух затирается... а мне нужно чтобы остался

   
 
 автор: MIchail1982   (10.12.2007 в 15:05)   письмо автору
 
   для: mixer   (10.12.2007 в 14:29)
 

Это в каком браузере? в ИЕ и ФФ всё ОК

<textarea name=textarea["+id+"]

там удалите лишний '

   
 
 автор: CNT   (10.12.2007 в 15:27)   письмо автору
 
   для: mixer   (10.12.2007 в 14:29)
 

объект.innerHTML - это всего лишь изначальный HTML-код, который был прописан в объекте.
Все, что юзер позже вписал в текстовое поле - оно ведь изначально в коде отсутствовало, потому и при перезаписи innerHTML всё введенное юзером исчезает.

Чтобы сохранилось введенное юзером, трогать то, с чем он уже работал (куда вводил значения) НЕЛЬЗЯ.

Новые элементы необходимо создавать одним из методов:
или createElement ()
или cloneNode () - если добавляется аналогичный имеющемуся элемент

А "приживлять" эти новые элементы в объекте следует одним из методов:
или appendChild ()
или insertAdjacentElement ()
или insertAdjacentHTML ()

   
 
 автор: mixer   (10.12.2007 в 16:17)   письмо автору
 
   для: CNT   (10.12.2007 в 15:27)
 

можно ли навести пример? если не трудно))))

   
 
 автор: CNT   (10.12.2007 в 18:46)   письмо автору
 
   для: mixer   (10.12.2007 в 16:17)
 

Трудно, ибо вы используете таблицу, а с ней при клонировании довольно много заморочек, ибо разные браузеры по разному динамически создают таблицы - писать много кода надо.

А как добавляется элемент - вы, я смотрю, и сами уже знаете (10.12.2007 в 18:42)

   
 
 автор: bronenos   (10.12.2007 в 17:51)   письмо автору
 
   для: CNT   (10.12.2007 в 15:27)
 

+ createTextNode
или проще - innerHTML +=

   
 
 автор: CNT   (10.12.2007 в 18:39)   письмо автору
 
   для: bronenos   (10.12.2007 в 17:51)
 

Вы бы сначала попробовали, что ли, прежде чем "простые" советы раздавать, а?
Заодно неплохо бы и научиться читать повнимательней - совет по поводу innerHTML += уже звучал выше (10.12.2007 в 14:21) и топикстартером на него был дан отрицательный ответ (10.12.2007 в 14:29)

Практически все браузеры (кроме MSIE) при перезаписи innerHTML воспроизводят только начальный код - без изменений внесенных юзером - о чем я и написал (10.12.2007 в 15:27)

   
 
 автор: mixer   (10.12.2007 в 18:42)   письмо автору
 
   для: mixer   (10.12.2007 в 14:18)
 

<html>
<head>
<script language='JavaScript' type='text/javascript'>
var id=0;
function add_field()
{
var s = document.createElement('input');
var b = document.createElement('br');
s.type='text';
id++;
s.name='text'+id;
s.value=id;
document.getElementById("constructor").appendChild(s);
document.getElementById("constructor").appendChild(b);
}

</script>
<head>
<body>

<form action='add.php' method='post'>
<input type='button' onclick='add_field()' value='добавить'>&nbsp;<input type='submit'><br>
<div id='constructor'>
</div>
</form>

</body>
</html>


работает! немного не такк как мне хотелось но все же работает)))

   
 
 автор: mixer   (10.12.2007 в 20:23)   письмо автору
 
   для: mixer   (10.12.2007 в 14:18)
 

<html>
<head>
<script language='JavaScript' type='text/javascript'>
var id=0;
function add_field()
{
var s = document.createElement('input');
var t = document.createElement('textarea');
var b = document.createElement('br');
var dell = document.createElement('input');
var add = document.createElement('input');

s.type='text';
id++;
s.name='text['+id+']';
s.value=id;
t.name='textarea['+id+']';
t.rows=3;
t.cols=50;

dell.type='button';
dell.onclick='dell_field()';
dell.value='-';
add.type='button';
add.onclick='add_field()';
add.value='+';

document.getElementById("constructor").appendChild(s);
document.getElementById("constructor").appendChild(t);
document.getElementById("constructor").appendChild(add);
document.getElementById("constructor").appendChild(dell);
document.getElementById("constructor").appendChild(b);
}

function dell_field()
{
document.getElementById("constructor").removeChild();
}

</script>
<head>
<body>

<form action='add.php' method='post'>
<input type='button' onclick='add_field()' value='добавить'>&nbsp;<input type='submit'><br>
<div id='constructor'>
</div>
</form>

</body>
</html>


вот последгяя модернизация))

Вопрос следующий: как удалить елемент? как правильно использовать removeChild()? или может есть другой метод удаления елементов?

   
 
 автор: bronenos   (10.12.2007 в 20:48)   письмо автору
 
   для: mixer   (10.12.2007 в 20:23)
 

obj.parentNode.removeChild(obj);

   
 
 автор: mixer   (11.12.2007 в 18:51)   письмо автору
2.4 Кб
 
   для: bronenos   (10.12.2007 в 20:48)
 

чегото не получается (((
больше часа проигрался с этим удаление и ничего не выходит

я прикрипил файлик с исходником... если не трудно посмотрите чо там я не так написал (((

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования