Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Выполнить только один раз событие onClick. (https://javascript.ru/forum/events/12176-vypolnit-tolko-odin-raz-sobytie-onclick.html)

exBill 04.10.2010 21:57

Выполнить только один раз событие onClick.
 
Добрый день. Только начал изучать JS и не знаю что дальше делать. Подскажите пожалуйста куда копать :)
Вот код.
<script language="JavaScript">
function opend(d, s, g)
{
var div = document.createElement("div");
div.id = g;
div.style.height = '50px';
div.style.background = '#3B9D00';
div.style.border = '1px solid red';
div.innerHTML=s;
document.getElementById(d).appendChild(div);
}

function dell(delD, rel)
{
var del = document.getElementById(rel);
var parent = document.getElementById(delD); 
parent.removeChild(del);
}

</script>
<center>

<div id="myDIV1" style="width:500px; height:auto; border:1px solid #333;">
<a href="#"  onclick="opend('myDIV1','ТЕКСТ -1', 'reload1')">Комментарий</a>
<a href="#" onclick="dell('myDIV1', 'reload1')">Удалить</a>
</div>

<div id="myDIV2" style="width:500px; height:auto; border:1px solid #333;">
<a href="#"  onclick="opend('myDIV2','ТЕКСТ -2', 'reload2')">Комментарий</a>
<a href="#" onclick="dell('myDIV2', 'reload2')">Удалить</a>
</div>
</center>



Как можно запретить повторное добавление div'a?

А конечная цель, сделать так, что бы при нажатии Комментарий проверялась страница на уже открытую форму добавления Комментария и если такая форма открыта, то закрыть.

Возможно ли удалить дочерний DIV не указывая родителя?
как-то так:
<script language="JavaScript">
function d()
{
var del = document.getElementById('reload');
removeChild(del);
}
</script>
<div id="myDIV1">
<div id="reload">ТЕКСТ -1</div>
</div>
<a href="#" onclick="d()">Удалить</a>



Может это тупиковый код, буду рад если объясните как будет лучше сделать. Хочу сделать скрипт обсуждение статьи (форум).

Sweet 04.10.2010 22:09

Если только начал изучать, то откажись от устаревших много лет назад вещей типа language="JavaScript":)
Цитата:

Сообщение от exBill
Возможно ли удалить дочерний DIV не указывая родителя?

Нет, но можно делать так:
del.parentNode.removeChild(del);

Sweet 04.10.2010 22:26

<script>
function toggle(element, text){
  var div = element.getElementsByTagName('div')[0];
  if(!div){
    var newDiv = document.createElement("div");
    newDiv.style.height = '50px';
    newDiv.style.background = '#3B9D00';
    newDiv.style.border = '1px solid red';
    newDiv.innerHTML = text;
    element.appendChild(newDiv);
  }else{
    div.parentNode.removeChild(div);
  }
}
</script>
<center>
<div style="width:500px; height:auto; border:1px solid #333;">
<a href="#" onclick="toggle(this.parentNode, 'ТЕКСТ - 1');">Добавить/удалить комментарий</a>
</div>
<div style="width:500px; height:auto; border:1px solid #333;">
<a href="#" onclick="toggle(this.parentNode, 'ТЕКСТ - 2');">Добавить/удалить комментарий</a>
</div>
</center>

exBill 04.10.2010 23:04

Sweet Спасибо за оперативный ответ.Только сегодня сел за JS. language="JavaScript Учту.

div.parentNode.removeChild(div);
буду знать :)

А можно если уже открыт div ТЕКСТ - 1, закрыть его после нажатия Добавить/удалить комментарий во втором DIVe? т.е где бы не нажал Добавить/удалить комментарий открывается только один ТЕКСТ, а второй если открыт, закрывается.

Подойдет и теория :) Спасибо.


Часовой пояс GMT +3, время: 06:36.