Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2010, 12:32   #1
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
Восклицание Ошибка в innerHTML

Привет!
Есть форма:
Код:
<FORM name=main_form ACTION="admin_package.add_tender_script">
    
    <center>
    <h4>Òèï òåíäåðà</h4>
    <select id="p_tendernum" name="p_tendernum" onChange="createDiv();">
         <option value=0>Конкурс
         <option value=1>Аукцион      
   </select>
 
   <div id="p_tender">
   </div> 
  </center>
    <input  type=button id=p_butt name=p_butt onClick=sendRequest(this.form) value="Ïîäàòü çàÿâêó">
    </FORM>
При изменении селекта вызывается js ф-ция сreateDiv().
Проблема в том, что при изменении mainforn.InnerHTML=mainforn.InnerHT ML+ <table>...</table>
селект изменяет свой selectedIndex на 0.
Если же писать mainforn.InnerHTML=<table>...</table>, то все нормально. В чем ошибка?
Код:
function createDiv()
   {
     var selectTag = document.getElementById("p_tendernum");
    // document.getElementById("p_tendernum").onchange();
      switch(selectTag.selectedIndex)
      {
         case 0:
            var mainform = document.getElementById("main_form");      
           main_form.innerHTML=main_form.innerHTML+"  <table border=1px>    <tr><th colspan=2>Èíôîðìàöèÿ î êîíêóðñå</th></tr>    <tr><td width=290px>Ñðîê,ìåñòî è ïîðÿäîê ïðåäñòàâëåíèÿ äîêóìåíòàöèè î êîíêóðñå</td><td><input type=hidden id=p_reqid><input type=hidden id=p_reqtype value=i><input type=text name=p_srok><br><input type=text name=p_pllace><br><input type=text name=p_poryadok></td></tr>    <tr><td width=290px>Îôèöèàëüíûé ñàéò, íà êîòîðîì ðàçìåùåíà èíôîðìàöèÿ î êîíêóðñå</td><td><label>www.ksu.ru</label></td></tr>    <tr><td width=290px>Ìåñòî âñêðûòèÿ êîíâåðòîâ ñ çàÿâêàìè íà ó÷àñòèå â êîíêóðñå</td><td><input type=text name=p_place></td></tr>    <tr><td width=290px>Äàòà è âðåìÿ âñêðûòèÿ êîíâåðòîâ ñ çàÿâêàìè(âðåìÿ ìåñòíîå)</td><td><input type=text name=p_time2></td></tr>    <tr><td width=290px>Ìåñòî ðàññìîòðåíèÿ çàÿâîê</td><td><input type=text name=p_place2></td></tr>    <tr><td width=290px>Âðåìÿ ðàññìîòðåíèÿ çàÿâîê(âðåìÿ ìåñòîíîå)</td><td><input type=text name=p_timeplace></td></tr>    <tr><td width=290px>Ïîäâåäåíèå èòîãîâ</td><td><input type=text name=p_itog></td></tr>    <tr><td width=290px>Äàòà çàñåäàíèÿ êîìèññèè, îñóùåñòâëÿþùåé îöåíêó è ñîïîñòàâëåíèå çàÿâîê(âðåìÿ ìåñòíîå)</td><td><input type=text name=p_data></td></tr>    <tr><td>Ñðîê ïîäïèñàíèÿ ïîáåäèòåëåì äîãîâîðà</td><td><input type=text name=p_podpis></td></tr>   <tr><td>Äàòà çàÿâêè íà ó÷àñòèå â êîíêóðñå,ðåêâèçèòû ñ÷åòà</td><td><input type=text name=p_begin><br><input type=text name=p_rek id=p_rek></td></tr>   <tr><td width=290px>Îáåñïå÷åíèå èñïîëíåíèÿ äîãîâîðà, ðåêâèçèòû ñ÷åòà</td><td><input type=text name=p_rekvizits><tr><td>Îáåñïå÷åíèå èñïîëíåíèÿ äîãîâîðà, ðåêâèçèòû ñ÷åòà</td><td><input type=text id=></td></tr></td></tr>    <tr><td width=290px>Ïðåèìóùåñòâà äëÿ îðãàíèçàöèé è ó÷ðåæäåíèé èíâàëèäîâ</td><td><input type=checkbox name=p_lgot></td></tr><tr><td>Èíàÿ èíôîðìàöèÿ</td><td><textarea id=p_others name=p_others></textarea></td></tr></table>  <br>"; 
        break;    
        case 1:       
            var mainform = document.getElementById("main_form");
            main_form.innerHTML+="<table border=1px ><tr><th colspan=2>Èíôîðìàöèÿ îá àóêöèîíå</th></tr><tr><td>Øàã àóêöèîíà</td><td><input type=hidden id=p_type name=p_type value=i><input id=p_num value=p_num type=text ></td></tr><tr><td>Ïðåèìóùåñòâà äëÿ îðãàíèçàöèé è ó÷ðåæäåíèé èíâàëèäîâ</td><td><input type=checkbox id=p_lgot></td></tr><tr><td>Ñðîê,ìåñòî è ïîðÿäîê ïðåäîñòàâëåíèÿ äîêóìåíòàöèè îá àóêöèîíå</td><td><input type=text id=p_srok name=p_srok><br><input type=text id=p_pllace name=p_pllace><br><input type=text id=p_poryadok name=p_poryadok></td></tr><tr><td>Îôèöèàëüíûé ñàéò, íà êîòîðîì ðàçìåùåíà çàÿâêà îá àóêöèîíå</td><td><label>http://www.ksu.ru</label></td></tr><tr><td>Äàòà îêîí÷àíèÿ ïîäà÷è çàÿâîê(âðåìÿ ìåñòíîå)</td><td><input type=text id=p_timeplace name=p_timeplace value='||dat_rassm||'></td></tr><tr><td>Äàòà îêîí÷àíèÿ ðàññìîòðåíèÿ çàÿâîê(âðåìÿ ìåñòíîå)</td><td><input type=text id=p_begin name=p_begin value='||dat_rassm||'></td></tr><tr><td>Ìåñòî ïðîâåäåíèÿ àóêöèîíà</td><td><input type=text id=p_place name=p_place></td></tr><tr><td>Äàòà è âðåìÿ ïðîâåäåíèÿ àóêöèîíà(âðåìÿ ìåòñíîå)</td><td><input type=text id=p_time2 name=p_time2 value='||dat_prov||'></td></tr><tr><td>Ñðîê  ïîäïèñàíèÿ ïîáåäèòåëåì äîãîâîðà</td><td><input type=text id=p_itog name=p_itog></td></tr><tr><td>Îáåñïå÷íèå çàÿâêè íà ó÷àñòèå â àóêöèîíå, ðåêâèçèòû ñ÷åòà</td><td><input type=text id=p_podpis name=p_podpis></td></tr><tr><td>Îáåñïå÷åíèå èñïîëíåíèÿ äîãîâîðà, ðåêâèçèòû ñ÷åòà</td><td><input type=text id=p_rekvizits name=p_rekvizits></td></tr><tr><td>Èíàÿ èíôîðìàöèÿ</td><td><textarea name=p_others id=p_others></textarea></td></tr></table>"; 
          break;        
       }
    }
bill вне форума Ответить с цитированием
Старый 19.11.2010, 16:24   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
main_form.innerHTML=main_form.inner HTML
Уберите тут землю, указатель к объекту у Вас называется "mainform", а "main_form" - это его id...
А по теме: лучше под селектом добавить еще див и в него добавлять то, что там у Вас добавляется... Либо в конце функции принудительно изменять выбор селекта( что по идее вызовет вновь эту же функцию). Т.е. селект у Вас меняется из-за того, что отрисовывается заново.
п.с. в тэг формы добавьте id.
Alar, верни репу!

Последний раз редактировалось Naive; 19.11.2010 в 16:30.
Naive вне форума Ответить с цитированием
Старый 20.11.2010, 10:26   #3
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
Радость

Цитата:
Сообщение от Naive Посмотреть сообщение
Уберите тут землю, указатель к объекту у Вас называется "mainform", а "main_form" - это его id...
Не заметил. Исправил- не работает.
Цитата:
Сообщение от Naive Посмотреть сообщение
А по теме: лучше под селектом добавить еще див и в него добавлять то, что там у Вас добавляется...
Я тоже думал над этим. Попробовал вставить в див - все работает.
Но почему с формой не получается сделать += - это вопрос открытый.
bill вне форума Ответить с цитированием
Старый 20.11.2010, 10:42   #4
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Подумайте что вы делаете:
"главная форма"."вставить текст" = "главная форма"."вставить текст" + "div"
Читаем здесь
Виталий Желтяков вне форума Ответить с цитированием
Старый 20.11.2010, 15:50   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от bill Посмотреть сообщение
Не заметил. Исправил- не работает.
Потому что у формы не объявлено свойство "id"
Цитата:
Сообщение от bill Посмотреть сообщение
Но почему с формой не получается сделать += - это вопрос открытый.
в общем-то получается, только селект рисуется заново, неактивный и не выбранный.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 21.11.2010, 10:55   #6
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

Цитата:
Но при этом все окошко чата "мигает", и все картинки перегружаются. Это происходит потому, что chatDiv.innerHTML += '...' можно еще иначе записать как
chatDiv.innerHTML = chatDiv.innerHTML + '...'
Т.е, свойство innerHTML узла очищается, а затем - целиком переустанавливается...
Вот и ответ. Получается перезагружается селект, который находится в форме.
Цитата:
в общем-то получается, только селект рисуется заново, неактивный и не выбранный.
У меня он был выбран по-умолчанию selectedIndex=0.

Проблему решил добавив просто один пустой див, в innerHTML которого просто загоняю нужную таблицу.
Всем Спасибо.
bill вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
Это ошибка Delphi или моя ошибка??? bloodeagle Общие вопросы Delphi 3 12.11.2009 15:26
innerHTML при изменении st1512 HTML и CSS 0 07.09.2009 10:04
Ошибка в Аfor i:=1 to SI do. Пишит что ошибка в SI Алексей_xXx Помощь студентам 2 29.05.2009 00:09
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... infrared Помощь студентам 0 16.04.2009 17:44