Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

Anexar corretamente LI em DIV criados dinamicamente

Recommended Posts

To criando um combo box usando uma input text + DIV + LI.

A coisa está funcionado 90%. O erro acontece na hora hora de fazer a "combo" abrir. Seu conteúdo só é carregado quando se clica uma segunda vez sobre a input.

Depois de alguns testes conclui que o problema está na hora de anexar as LI à DIV, neste trecho do código

if (!document.getElementById("listacombo-content")) // criar lista de LI{//Aqui crio a DIV que acomodará os itens da combo	var idInputAlvo = document.getElementById(campoTextAlvo).getAttribute("data-itemselecionado");	var divContainer = document.createElement("div")	var addDivContainer = document.getElementById(alvoLista).appendChild(divContainer);	addDivContainer.setAttribute('class','listacombo-container');	addDivContainer.setAttribute('id','listacombo-content');//Aqui crio as LI. Os dados vem de um datalist que é preenchido com dados carregados via AJAX//O restante do código (que não está postado aqui) está ok. Parece que o problema é na hora de//usar appendChild, acho que precisaria mudar a ordem de alguma coisa no trecho abaixo  	listaOptions = document.getElementById(datalist).options;		for( var z = 0; z < listaOptions.length; z++ )		{		var li = document.createElement("li")		var addli = document.getElementById(addDivContainer.id).appendChild(li);		var textlist = document.createTextNode(listaOptions[z].text);		li.setAttribute('class','listacombo-li');		li.setAttribute('id', listaOptions[z].value);		if (idInputAlvo == listaOptions[z].value)		{			li.setAttribute('class','listacombo-item-selecionado');		}				li.setAttribute("onclick", "trasferevalor_LI_para_InputText(id)");		li.setAttribute("data-input-alvo", campoTextAlvo);		addli.appendChild(textlist);		}}else{//aqui faço a DIV ser destruída caso ela já exista//isso é para fazê-la desaparecer quando for clicada novamente, como um toggle	var element = document.getElementById("listacombo-content");	element.parentNode.removeChild(element);}	}

Fiz um vídeo para ilustrar melhor

Help por favor.

 

 

Oi galera. Será que alguém pode ajudar?

O código está feito e funcionando. Só preciso fazer um pequeno ajuste e precisa saber aonde deve ser feito.

 

Valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.