Добавление строк в текущий документ
Ситуация:
Есть html-документ, состоящий из маленькой формы - текстовое поле, две радиокнопки, две кнопки (ок и reset). По нажатию на ок запускается функция (во внешнем файле), которая проделывает некоторые операции с текстовым полем и возвращает результат в виде набора строк. Проблема в том, что этот набор строк возникает перегрузкой страницы, а мне хотелось бы, чтобы результат помещался на текущей странице после формы. У меня есть ощущение, что решение у задачи простое, но поскольку я в этой области новичок, самостоятельный поиск пока результата не дал. Буду благодарен, если кто-то подскажет решение. |
|
Спасибо большое.
Я бегло пробежался (подробно пока нет времени читать) - вроде увидел, где подобные вещи показываются. |
Что-то ничего не получается, видимо не догоняю где-то:
Документ:
<head>
<title>Пример</title>
<script type="text/javascript" src="script.js"></script>
<style type="text/css">
.radio {
margin-top: 10;
}
.button {
margin-top: 10;
margin-right: 15;
padding: 0 15 0 15;
width: auto;
overflow: visible;
}
</style>
</head>
<body>
<form name="form1">
<input type="text" name="sentence" size="200"><br>
<input type="radio" name="direction" value="начало" checked="true" class="radio">Начало<br>
<input type="radio" name="direction" value="конец">Конец<br>
<input type="submit" name="ok" value="Ok" class="button" onclick="parse();">
<input type="reset" name="ok" value="Отмена" onclick="document.forms.form1.reset()">
</form>
<p>Результат выполнения:<p>
<hr>
</body>
Скрипт:
function parse () {
var hr = document.getElementByTagName('hr');
var p = document.getElementsByTagName('p')[0];
var newElem = document.createElement('p');
newElem = 'Новый элемент';
hr.insertBefore(newElem, p);
}
Вроде все как указано делаю, но результата нет - новый абзац не добавляется. Может кто-нибудь подсказать, где ошибка? |
Скрипт немного неверно скопировал:
function parse () {
var hr = document.getElementByTagName('hr');
var p = document.getElementsByTagName('p')[0];
var newElem = document.createElement('p');
newElem.innerHTML = 'Новый элемент';
hr.insertBefore(newElem, p);
}
|
С <hr> непонятно что вы пытаетесь сделать, метода getElementByTagName не существует, сами же в следующей строчке написали правильный вариант.
function parse () {
var p = document.getElementsByTagName('p')[0];
var newElem = document.createElement('p');
newElem.innerHTML = 'Новый элемент';
p.parentNode.insertBefore(newElem, p);
}
|
Цитата:
[spoiler]вы забыли указать индекс для первого списка элементов[/spoiler] это раз Цитата:
//если вы хотите поставить перед чертой(черта <hr> не может иметь потомков) hr.parentNode.insertBefore(newElem, hr); PS не успел немного |
Переписал функцию Вашим вариантом. Мне понятно, как она работает, но строка по прежнему не добавляется (в firefox она как бы добавляется, но тут же исчезает).
|
onclick="parse();"
меняем на onclick="parse();return false;" таким образом избавляемся от стандартного обработчика события |
Работает!
Спасибо огромное всем!!! С такой конструкцией вызова функции раньше не сталкивался, не совсем понимаю принцип работы, и это печально. Если не надоел еще, может объясните вкратце. Если надоел - сам постараюсь найти. В любом случае всем еще раз огромное спасибо. |
| Часовой пояс GMT +3, время: 12:18. |