Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   удаление созданого элемента (https://javascript.ru/forum/events/9909-udalenie-sozdanogo-ehlementa.html)

zakat 10.06.2010 19:45

удаление созданого элемента
 
function createMessage()
{
  var container = document.createElement('div');
  container.innerHTML = '<div id="my-select"> \
    <p class="my-option">Si</p> \
    <p class="my-option">No</p> \
  </div>';

  return container.firstChild;
}

function positionMessage(elem, id)
{
	document.getElementById(id).style.borderBottom = 'none';
	pos = getElementPosition(id);
	var left = pos.left;
	var top = pos.top;
	elem.style.position = 'absolute';
	elem.style.left = left + "px";
	elem.style.top = top + 32 + "px";
}

function addCloseOnClick(messageElem, id)
{
  var p = messageElem.getElementsByTagName('P');
	var si = p[0].innerHTML;
	var no = p[1].innerHTML;

  p[0].onclick = function()
	{
		document.getElementById(id).value = si;
    messageElem.parentNode.removeChild(messageElem);
  }
	
	p[1].onclick = function()
	{
		document.getElementById(id).value = no;
    messageElem.parentNode.removeChild(messageElem);
  }
	
	p[0,1].onmouseout = function()
	{
		messageElem.parentNode.removeChild(messageElem);
	}
 
	document.getElementById(id).style.borderBottom = '1px solid #CC6600';
}


function setupMessageButton(id)
{
  var messageElem = createMessage();
  positionMessage(messageElem,id);
  addCloseOnClick(messageElem,id);
  document.body.appendChild(messageElem);
}

function getElementPosition(id)
{
	var elem = document.getElementById(id);
	var w = elem.offsetWidth;
	var h = elem.offsetHeight;
	var l = 0;
	var t = 0;
	while (elem)
	{
		l += elem.offsetLeft;
		t += elem.offsetTop;
		elem = elem.offsetParent;
	}
	return {"left":l, "top":t, "width": w, "height":h};
}

<input class="diary-field" id="federado" onClick="setupMessageButton('federado')" type="text" name="federado" value="">

ну вот такая не замысловатая иммитация тега селект. справился со всем кроме удаления элемнта после того как инпут и теги <p></p> теряют фокус. как сделать ума не приложу да и уже закрадываются сомнения возможно ли.
ЗЫ. большая часть кода взята из статей этого сайта.
ЗЫ2. в javascript баян и если можно жестоко не пинайте.

Skipp 11.06.2010 09:38

А можно по конкретнее, что не получается?

zakat 11.06.2010 14:52

не получается заныкать созданный элемент когда происходик клик где-то в другом месте страницы.
Зы. пробовал убрать по событию onblur но либо так нельзя, либо как-то криво пробовал и еэлент удалялся даже при клики на вариант ответа.

Skipp 11.06.2010 14:55

zakat,
Ну удаляйте его, допустим, если происходит клик на документе, только в тех случаях если это не ваше окно и не его дочки.

zakat 11.06.2010 15:32

а немного конкретнее можно? ибо:
Цитата:

ЗЫ2. в javascript баян


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