Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Помогите с document.write


Автор: 4aa19 16.11.2009, 15:41
Мне нужно, что бы при нажатии на кнопку, запускалась функция javascript и дописывала html-код на той же странице, если я использую document.write, то оно всё это пишет на новой странице, которую само и создаёт! Ещё делал с document.getElementById(' ').innerHTML, оно пишет на той станице, но не всё правильно пишет! Может есть какие другие функции или может где-то надо, ещё чего дописать! Подскажите пожалуйста!

Автор: comtat 16.11.2009, 17:53
Цитата(4aa19 @  16.11.2009,  15:41 Найти цитируемый пост)
оно пишет на той станице, но не всё правильно пишет!

А что именно не правильно пишет ?? Пример

Автор: 4aa19 16.11.2009, 18:44
Просто там идёт ещё css код, но document.getElementById(' ').innerHTML его почему-то не воспринимает! А с css2Properties я не могу разобраться!

Добавлено @ 18:48
Код

<script language="JavaScript">
<!-- hide

function vvod_matr() 
{
var a=Number(document.getElementById('a1').value);
var b=Number(document.getElementById('b1').value);
var i;
var d;
var c;
var k;
var j;
var l=100;
document.getElementById('results1').innerHTML ='';
for (j = 1; j <= a; j++)
   {
   document.getElementById('results').innerHTML ='<style type="text/css"><!-- #kolon'+j+'       { position: absolute; top: 200px; left: '+l+'px;  width: 80px;  }  -->  </style>' ;
     l=j*90;
document.getElementById('results1').innerHTML +='<div id="kolon'+j+'">';
  for(i = 1; i <= b; i++)
      {
  document.getElementById('results1').innerHTML +='<form action=""><input type="text" id="'+i+j+'" value= "'+i+j+'"елемент size=8 maxlength="8">  </form>';
 
      }document.getElementById('results1').innerHTML +='</div>';
    
   } 
 
document.getElementById('results2').innerHTML ='<form action=""><input type="button"value="Решить" onClick="obr_matr()">  </form>';
}

<div id="vvod">
<form action="">
<input type="text" id="a1" value="введите a" size=8 maxlength="2">
</form>

<form action="">
<input type="text" id="b1" value="введите b" size=8 maxlength="2">
</form>
</div>



<form>
<input type="button" value="Решить" onClick="vvod_matr()">
</form>      
<div id="results"></div>
<div id="results1"></div>
<div id="results2"></div>
<div id="results3"></div>
<div id="results4"></div>


Если вместо  document.getElementById('results').innerHTML прописать document.write, то всё работает только в новом документе!

Автор: bars80080 16.11.2009, 18:59
...

Автор: Amphiluke 16.11.2009, 19:04
Цитата(4aa19 @  16.11.2009,  15:41 Найти цитируемый пост)
Может есть какие другие функции или может где-то надо, ещё чего дописать!

Конечно есть. И было бы правильнее использовать именно их. Это стандартные методы объектов document, body и др., такие как createElement(), appendChild(), insertBefore()... Однако при таком (правильном) подходе размер кода увеличится значительно, поскольку придется по очереди один за другим выставлять все атрибуты создаваемых объектов.
Если позволяет логика работы вашего веб-приложения, то лучше было бы не создавать с нуля все эти элементы (контейнеры, формы, элементы форм), а просто статично прописать их в коде и задать стиль display="none", а при возникновении необходимости отобразить — display="block" или там display="inline". Но с дескриптором style так лучшене шутить, как вы. Правильнее создать заранее CSS класс и опять же при возникновении необходимости сменить/установить этот класс для нужных элементов.

P.S. Вообще, использование innerHTML — очень нехороший не очень хороший стиль програмирования.

Автор: 4aa19 16.11.2009, 19:12
там количество элементов задаётся с форм, то использовать display="none" не выйдет:(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)