|
|
|
| Приветствую. Помогите разобраться в следующем:
Есть код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<style type = "text/css">
.tavop {position:absolute;left:10px;width: 320px; height:30px; overflow:auto;}
.taotv {position:absolute;left:330px;width: 320px; height:30px; overflow:auto;}
</style>
.
<script type="text/javascript">
<!--
function f_() // пустое поле ФИО ОТВЕЧАЮЩЕГО при фокусе
{
var n1 = document.getElementById('otv').value;
if (n1 == 'ОТВЕТ')
{
document.getElementById('otv').value = " ";
}
}
function f_dop_vop() {////////////////////////////////////////////добавить вопрос
var Form = document.getElementById('great');
var P = document.createElement('p');
var Br = document.createElement('br');
var Inner = document.createElement('textarea');
Inner.type = 'text';
Inner.value = 'НАЗВАНИЕ ВОПРОСА';
Inner.name = 'VOPROS';
Inner.className = 'tavop';
Form.appendChild(P);
Form.appendChild(Br);
Form.appendChild(Inner);
Form.appendChild(Br);
}
function f_dop_otv() {////////////////////////////////////////////добавить ответ
var Form = document.getElementById('great');
var P = document.createElement('p');
var Br = document.createElement('br');
var Inner = document.createElement('textarea');
Inner.type = 'text';
Inner.value = 'ОТВЕТ';
Inner.name = 'OTVET';
Inner.id = 'otv';
Inner.className = 'taotv';
Inner .ondblclick= f_();
Form.appendChild(P);
Form.appendChild(Br);
Form.appendChild(Inner);
Form.appendChild(Br);
}
//-->
</script>
</head>
<body>
<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////Интерфейс,////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //-->
<div style = "position: relative;">
<script type="text/javascript">
<!--
document.write ('ОПРОС');
//-->
</script>
<br>
<form method ="post" action = "NE.php" id="great" >
<input name = "OPROS" value ="НАЗВАНИЕ ОПРОСА" > <br><br>
<input type="button" value="ДОБАВИТЬ ВОПРОС" onclick="f_dop_vop();" id="button1" style = "float:left;">
<input type="button" value="ДОБАВИТЬ ОТВЕТ" onclick="f_dop_otv();" id ="button2">
</form>
</div>
</body>
</html>
|
Не работает кнопка добавить ответ. Идея была такова : при нажатии кнопки ответ добавляется поле <textarea> . затем при двойном клике поле очищается от слова ОТВЕТ. Может функцию очистки ( f_() ) вызываю не правильно? | |
|
|
|
|
|
|
|
для: mikado3333
(26.12.2012 в 21:28)
| | назначать функцию следует без скобок, только имя
и ещё - ваши "вторые" теги <br> в обоих функциях не пропишутся
<script>
onload = function ()
{
var inp = document.createElement ('input');
document.body.appendChild (inp); // первый раз
document.body.appendChild (inp); // второй раз
// второй раз не нарисует, но и ошибки в консоли не даст
// надо сделать клон, и уже клон второй раз приживлять
var myclon = inp.cloneNode (0);
myclon.value = 'CLON';
document.body.appendChild (myclon);
}
</script>
|
при изучении активнее пользуйтесь консолями ошибок в разных браузерах
узнать способы вызова консоли ошибок для вас сейчас - самая главная задача
а кнопка "Очистить" внутри этой консоли ошибок - самая важная кнопка
в Mozilla и Chrome -- Ctrl+Shift+J или через меню
в Opera -- Ctrl+Shift+O или через меню
в MSIE - через меню
в Safari - через клик правой кнопкой мыши по странице с выбором в контекстном меню пункта "Проверить объект" | |
|
|
|
|
|
|
|
для: ЯСА
(27.12.2012 в 09:34)
| | Спасибо ЯСА! С <br> все поучилось. Но вот при создании еще одного поля Textarea этот вариант не проходит.
function f_dop_otv() {////////////////////////////////////////////добавить ответ
var Form = document.getElementById('great');
var P = document.createElement('p');
var Br = document.createElement('br');
var Inner = document.createElement('textarea');
var BBr = Br.cloneNode(0);
var Inner1 = Inner.clonNode(0);
Inner1.value = 'Clon';
Inner.type = 'text';
Inner.value = 'ОТВЕТ';
Inner.name = 'OTVET ';
Inner.id = 'otv';
Inner.className = 'taotv';
Inner .onfocus= f_;
Form.appendChild(P);
Form.appendChild(Br);
Form.appendChild(Inner);
Form.appendChild(BBr);
Form.appendChild(Inner1);
}
|
И еще одна проблемка -Функция очистки (f_) поля заработала, но работает только в первом созданном элементе. а при выборе второго элемента очищается опять первый. | |
|
|
|
|
|
|
|
для: mikado3333
(27.12.2012 в 12:24)
| | функция f_ () у вас "заточена" под очистку значения в элементе с id="otv"
таковой элемент на странице у вас один (и должен быть один - значение id должно быть уникальным в пределах документа)
соответственно, она и "очищает" только первое созданное <textarea>
если хотите сделать очистку "универсальной", тогда вовсе ликвидируйте поименованную функцию f_ ()
а прописывайте безымянную функцию вот так:
// создаёте виртуальное первое <textarea> (оно ведь ещё не на странице, поэтому "виртуальное")
var Inner = document.createElement ('textarea');
Inner.type = 'text'; // ЗАЧЕМ вам это - не понимаю, у тега <textarea> НЕТ атрибута TYPE
Inner.value = 'ОТВЕТ';
Inner.className = 'taotv';
// и только ЗАТЕМ создаёте второе виртуальное <textarea>
// и это второе <textarea> будет наследовать все ОБЩИЕ свойства, кои вы прописали для первого
// а именно type, value, className
var Inner1 = Inner.cloneNode (0); // здесь у вас ошибка была - надо cloneNode
// и только ПОТОМ, если надо, "раздаёте" индивидуальные признаки - а именно NAME и ID
// имена и id должны содержать ТОЛЬКО: 1) латинские буквы, 2) арабские цифры, 3) символ _
// причём начинаться должны с буквы
// а у вас в имени недопустимый пробел имеется
Inner.name = 'OTVET'; Inner.id = 'otv';
Inner1.name = 'OTVET1'; Inner.id = 'otv1';
// кроме того, запомните: функции по событиям НЕ НАСЛЕДУЮТСЯ
// поэтому их тоже надо "раздавать" всем по-отдельности
Inner.onfocus = function () {this.value = ''}
Inner1.onfocus = function () {this.value = ''}
// а id, в принципе, вам уже не нужны, ибо функции назначены "напрямую"
// меняете для второго то, что уже назначено ранее для первого и вторым
// унаследовано, а требуется иное - я о значении VALUE
Inner1.value = 'Clon';
// и, наконец, оба ваших "виртуала" "приживляете" на страницу
// причём в нужном вам порядке (здесь - первый и второй, но можно и наоборот)
Form.appendChild (Inner);
Form.appendChild (Inner1);
|
| |
|
|
|