Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамическое добавление элементов, работает некорректно 
:(
    Опции темы
Гость_гость
Дата 2.12.2005, 23:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Идея такова. Из MySQL читаются данные и загоняются в таблицу... при желании должна быть возможность добавить в БД свои новые значения.... Все работает, но проблема в том, что при добавлении новой строки для заполнения ее данными строка для ввода данных пользователя оказывается выше самой таблицы... хотелось бы, чтобы строка находилась на своем законном месте.... Следующий пример демонстрирует упрощенный код.
В нем выводятся данные из БД в табличку и создается строка с тектовыми формами для каждого столбца, ожидающая данных от пользователя... также создается кнопка для добавления новых строк, привязанная к коду, который в данном примере ничего не делает.... кроме того, что почему то старая новая строка по неизвестным причинам оказывается ВЫШЕ таблицы... Из-за чего такое может происходить?

Код

...
<script LANGUAGE="JavaScript">

function AddNewLine()
{
//ради интереса ничего не трогаем... просто перезаписываем то, что прочитали

   t=document.getElementById('test').innerHTML; 
   document.getElementById('test').innerHTML=t; 
}
</SCRIPT>


...
<?php
    ....
    echo "<TABLE>";

while(....){ //пока не кончатся записи в таблице из БД MySQL
    for($i=0;$<4;$i++); 
{
      echo "<TD>";
      echo "data=".$data[i];
      echo "</TD>";
}//for $i
}

    echo "<SPAN ID='test'><TR>";
  
    for($i=0;$<4;$i++); 
{
      echo "<TD>";
      echo "<INPUT type=\"text\">text</INPUT>";
      echo "</TD";
}//for $i
   
   echo "</TR></SPAN></TABLE>";

   echo "<BUTTON onclick=\"AddNewLine()\";>нажми меня</BUTTON>";
?>



  Вверх
Guest
Дата 2.12.2005, 23:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











забыл добавить... использую IE 6.0

вот еще более простой пример неверно работающего кода:

Код


<HTML>

<HEAD>
</HEAD>

<BODY bgcolor=#e9e9e9>

<script language="JavaScript">

function AddNewLine()
{
    t=document.getElementById('test1').innerHTML; // получаем HTML-код таблицы
    document.getElementById('test1').innerHTML=t; //
}
</script>

<TABLE border=1>
<TR><TD>1</TD><TD>2</TD><TD>3</TD><TD>4</TD><TD>5</TD></TR>


<SPAN ID="test1">
<TR>
<TD><INPUT type=text></tD>
<TD><INPUT type=text></tD>
<TD><INPUT type=text></tD>
<TD><INPUT type=text></tD>
<TD><INPUT type=text></tD>
</TR>
</SPAN>

</TABLE>
<BUTTON onclick="AddNewLine();">Добавить</BUTTON>

</BODY>
</HTML>


  Вверх
Ciber SLasH
Дата 3.12.2005, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Подход к добавлению строки вообще не правильный.
Поиск по форуму по слову insertRow выдал кучу результатов: http://forum.vingrad.ru/index.php?act=Sear...hlite=insertrow
чаще юзай поиск...

Вот один из постов, в котором как раз решение по добавлению строки в таблицу: http://forum.vingrad.ru/index.php?showtopi...ndpost&p=417587
PM   Вверх
Guest
Дата 3.12.2005, 00:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А можно узнать почему:

Цитата
Подход к добавлению строки вообще не правильный.


А насчет поиска согласен, но лишь частично - т.к. в JavaScript я только начинающий, про insertRow как то не подумалось...
Вопрос в догонку - почему мой код работает неправильно? я грешу на то, что этот innerHTML как то странно себя ведет... я полагал, что при присвоении в

Код

document.getElementById('test1').innerHTML=t; 


на место прежнего кода поместиться новый, но если бы все было так просто... дело в том, что если ручками прописать то, что должно вставится при выполнении этого innerHTML, то все получается прекрасно, а с ним - нарушается форматирование документа. Что-то тут явно не так.

p.s. поиск по innerHTML почти ничего не дал, непонятно как он вставляет код в промежутке тега <SPAN>...

  Вверх
Ciber SLasH
Дата 3.12.2005, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Код
    t=document.getElementById('test1').innerHTML; // получаем HTML-код таблицы
    document.getElementById('test1').innerHTML=t; //

Попробую объяснить то, что ты пытаешся сделать в этом коде:
1) переменной t ты присвоил HTML-код который содержит элемент в id=test1
2) ты пытаешся в этот же элемент запихнуть, самого себя
PM   Вверх
GIK
Дата 3.12.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Добавить эллемент в таблицу можно с помощью createElement(N)
Пример с добавлением из текстовых полей.
Код

<html>
 <head>
  <script type="text/javascript">
  <!--   
         function gen1()
 {  var idform=document.getElementById("f2");
    var tbody = idform.firstChild.firstChild;

    var textVal1 = document.getElementById("f1").elements[0].getAttribute("value");
    var textVal2 = document.getElementById("f1").elements[1].getAttribute("value");
    var textVal3 = document.getElementById("f1").elements[2].getAttribute("value");
     var tr1 = document.createElement("tr");
     var td1 = document.createElement("td");
     var td2 = document.createElement("td"); 
     var td3 = document.createElement("td");
     var textNod1 = document.createTextNode(textVal1);
     var textNod2 = document.createTextNode(textVal2);
     var textNod3 = document.createTextNode(textVal3);
 
   
    td1.appendChild(textNod1);
    td2.appendChild(textNod2);
    td3.appendChild(textNod3); 
     tr1.appendChild(td1);
     tr1.appendChild(td2);
     tr1.appendChild(td3);
    tbody.appendChild(tr1);
  } 
   
   //-->
  </script>
 </head>
<body>
  <input type="button" onclick="gen1()" value="Изменить"><br>
 <form id="f1">
 <input type="text" name="n1" value="текст1"><br>
 <input type="text" name="n2" value="текст2"><br>
 <input type="text" name="n3" value="текст3"><br>
 </form>
 <form id="f2">
    <table border=3>
     <tr><td>Первый столбец</td><td>Второй столбец</td><td>Третий столбец</td></tr>  
    </table>
 </form>
</body>
</html>



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Guest
Дата 3.12.2005, 23:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата

Попробую объяснить то, что ты пытаешся сделать в этом коде:
1) переменной t ты присвоил HTML-код который содержит элемент в id=test1


Вообще то я сделал это вполне намерянно - для того, чтобы показать, что по сути код никак измениться не должен, т.к. вставляем мы ТО ЖЕ САМОЕ, что и читаем... однако даже при этой операции, когда ничего изменится не должно - форматирование документа нарушается, а именно это меня и не устраивает... попробуйте выполнить этот пример в IE 6.0 и вы увидите, что я имею ввиду.

to GIK

спасибо большое, буду разбираться, так оно и должно работать smile

P.S. и все таки насчет innerHTML - поясните, если можно, что конкретно она делает и почему все таки нарушается форматирование документа, если сам документ вроде изменяться не должен?
  Вверх
Ciber SLasH
Дата 4.12.2005, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Вот инфа на MSDN-е по innerHTML: http://msdn.microsoft.com/workshop/author/...s/innerhtml.asp
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3751 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.