Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Динамическое создание полей / 8 сообщений из 8, страница 1 из 1
16.07.2008, 14:18
    #35433844
ice-covered
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание полей
Требуется динамически создать текстовое поле.
Нашла в сети вот тут http://scriptic.ru/form/field.shtml пример. Переделала под себя..
Но у меня выдает ошибку (на строке 12, символ 3, недопустимый аргумент).
Вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<html><head><script language="javascript">
var items= 1 ;
function AddItem() {
  div=document.getElementById("items");
  button=document.getElementById("add");
  items++;
  newitem="<strong>" + items + ") </strong>";
  newitem+="<input type=\"text\" name=\"p_indicator\"";
  newitem+=" size=\"40\" maxlength=\"100\"></td></tr><tr><td>";
  newnode=document.createElement("span");
  newnode.innerHTML=newitem;
  div.insertBefore(newnode,button);
}
 </script></head><body>
<div align="center">
<form action="card_script" method="POST" name="main">
<table border= 0 >
<tr><td> Название теста </td><td><input type="text" size="40" maxlength="150" name="p_name" value=""></td></tr>
<tr><td> Количество вопросов </td><td><input type="text" size="5" maxlength="3" name="p_quest" value=""></td></tr>
<tr><td> Время на тест (мин) </td><td><input type="text" size="5" maxlength="3" name="p_time" value=""></td></tr>
<tr><td> Количество вариантов ответа на один вопрос </td><td><input type="text" size="5" maxlength="3" name="p_answ" value=""></td></tr>
<tr><td valign=top> Показатели </td><td>
<table border= 0 >
<div ID="items">
            <tr><td><strong> 1 ) </strong><input type="text" name="p_indicator" size="40" maxlength="100"></td></tr><tr><td>
<input type="button" value="Добавить показатель" onClick="AddItem();" ID="add"></td></tr>
</div></table>
</td></tr>
</table>
<center><input type="submit" value="Создать тест"> </center>
</form></div></body></html>

Помогите пожалуйста исправить...
...
Рейтинг: 0 / 0
16.07.2008, 14:22
    #35433857
Evgeniy_SH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание полей
не используй имена тегов в качестве переменных...
div = div1 = div_...
...
Рейтинг: 0 / 0
16.07.2008, 14:28
    #35433879
ice-covered
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание полей
Это не исправляет ошибку...
...
Рейтинг: 0 / 0
16.07.2008, 14:33
    #35433899
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание полей
Замени ВСЕ уникальные названия (div, button, newitem, newnode) и перед insertBefore поставь alert(_newnode + " " + _button) и посмотри, какой будет null, отсюда и копай.

(_newnode и _button - это старые newnode и button)
...
Рейтинг: 0 / 0
16.07.2008, 14:42
    #35433934
ice-covered
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание полей
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<script language="javascript">
var qitems= 1 ;
function AddItem() {
  qdiv=document.getElementById("items");
  qbutton=document.getElementById("add");
  qitems++;
  qnewitem="<strong>" + qitems + ") </strong>";
  qnewitem+="<input type=\"text\" name=\"p_indicator\"";
  qnewitem+=" size=\"40\" maxlength=\"100\"></td></tr><tr><td>";
  qnewnode=document.createElement("span");
  qnewnode.innerHTML=qnewitem;
  alert(qnewnode + " " + qbutton) ;
  qdiv.insertBefore(qnewnode,qbutton);
}
 </script>

Если делаю вот так, алертом выводится: "[object] [object]"
...
Рейтинг: 0 / 0
16.07.2008, 14:59
    #35433997
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание полей
Ёпть ... в двух березах заблудился.

insertBefore вставляет по принципу папа.insertBefore(новыйСын, старыйСын), но в твоей структуре "старыйСын" не относится к "папа", так как у "папы" есть единственный сын "tr", у которого "сын" - "td", а вот у него уже "сын" - наш "старыйСын" с id=add. Так что поменяй структуру документа или разберись с иерархией в документе.
...
Рейтинг: 0 / 0
16.07.2008, 15:01
    #35434006
ice-covered
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание полей
Спасибо. Теперь поняла...
...
Рейтинг: 0 / 0
16.07.2008, 15:12
    #35434048
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание полей
IDVsbruckЁпть ... в двух березах заблудился.


а в двух ли? По той чащобе гулять и гулять... Хтмл-код невалиден изначально. Див внутри table - это бред. И <tr><td> внутри дива - тоже. div.insertBefore(newnode,button) - добавление в невалидный див элемента span, внутри которого будет невалидная строка <tr><td> - это тоже из той же оперы.

2топикстартер:
приведите в порядок хтмл. Добавляйте строки таблицы не текстом (в innerHTML таблицы вообще нельзя ничего добавить - это свойство readOnly), а стандартными методами DOM (createElement или полегче будет insertRow , insertCell )
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Динамическое создание полей / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]