Thiagonlyway Postado Janeiro 13, 2010 Denunciar Share Postado Janeiro 13, 2010 tenho um problema em meu script que a principio não sei resolver.tenho um arquivo .HTML e nele contém uma tag SELECT e dentro dela há varias OPTIONSsemelhante a isto:<select name="selectDestinatarios" id="selectDestinatarios" multiple="multiple" > <option>teste1</option> <option>teste2</option> <option>teste3</option></select>e uso javaScript para recuperar os childNodes ("nós filhos") do elemento(tag) SELECTum trecho do código javaScript é este://------------------------------------------------------------------------------------var options = document.getElementById("selectDestinatarios").childNodes;// e depois eu vejo quantos elementos existem na variavel "options"alert(options.length);//------------------------------------------------------------------------------------teoricamente eu receberia um "alert" dizendo que tenho 3 elementos dentro da variavel "options" (os 3 elementos OPTION)mais eu recebo um "alert" dizendo que contém 6 elementos,ai descobri que a culpa disto era porque havia "enters" no final das linhas e o javaScript considera eles como elementos também!a mesma coisa acontece com "espaços em branco" entre as tagsexemplo:<select name="selectDestinatarios" id="selectDestinatarios" multiple="multiple" > <option>teste1</option> <option>teste2</option> <option>teste3</option></select>entre as tags OPTION há espaços em branco e o javaScript retorna eles como se fossem childNodes do elemento SELECTe de fato são mesmo!e ai vem meu problema:Como recuperar somente as tags OPTION com o método "element.childNodes" do elemento SELECT?(há algum outro método?)eu queria saber se existe uma função que eu possa recuperar somente os OPTIONs dentro do SELECT, sem os "enters e espaços em braco".se eu fizer desta forma funciona:<select name="selectDestinatarios" id="selectDestinatarios" multiple="multiple" ><option>teste1</option><option>teste2</option><option>teste3</option></select>e no java script:var options = document.getElementById("selectDestinatarios").childNodes;alert(options.length);ai sim o "alert" me mostra 3 elementos! (os 3 OPTIONs apenas)mais eu gostaria de deixar meu script html estruturado,e não gostaria de usar uma estrutura de decisão (IF-ELSE) para saber se o childNode do elemento SELECT é um "espaço em branco ou enter"(textNodes)ou se é um elemento OPTIONporque o código em javascript precisa ser executado o mais rapido possível porque eu estou trabalhando com muitos OPTIONs dentro do SELECT, e comparar cada um seria muito demorado.resumindo...há alguma maneira de conseguir recuperar somente os OPTIONs de dentro do SELECT?sem precisar usar uma estrutura de condição para eliminar os "enters e espaços em branco"? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 SK15 Postado Janeiro 13, 2010 Denunciar Share Postado Janeiro 13, 2010 <script> var total = document.getElementById("selectDestinatarios").options.length; alert(total); </script>?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiagonlyway Postado Janeiro 13, 2010 Autor Denunciar Share Postado Janeiro 13, 2010 <script> var total = document.getElementById("selectDestinatarios").options.length; alert(total); </script> ?? Muito Obrigado SK15 mas acho que não fui muito claro no meu problema, o "alert" foi só para demostrar que havia mais de 3 childNodes dentro do elemento SELECT além dos OPTIONs, e que eram os "enters" e "espaços em branco" que também são childNodes do SELECT (acredito que sejam textNodes) e eu queria que houvesse somente 3 childNodes (somente os OPTIONs) mais observei seu código e vi que foi falta de atenção minha, porque retirando o método .length acredito conseguir o que quero (recuperar apenas os OPTIONs dentro do SELECT): <script> var arrayDeOptions = document.getElementById("selectDestinatarios").options; alert(arrayDeOptions.length);//apenas para demonstrar que há 3 elementos dentro do array </script>acredito que isso resolva meu problema, muito obrigado por sua ajuda. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiagonlyway Postado Janeiro 14, 2010 Autor Denunciar Share Postado Janeiro 14, 2010 Mas se no caso meu documento não fosse um HTML mais sim um XML e tentasse usar o método "element.childNodes"?eu teria estes mesmos problemas com os espaços e ENTERs entre as tags?já tive esse problema com java, mas e com javascript? é possível ter tambem?perguntando apenas por curiosidade e prevensão Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thiagonlyway
tenho um problema em meu script que a principio não sei resolver.
tenho um arquivo .HTML e nele contém uma tag SELECT e dentro dela há varias OPTIONS
semelhante a isto:
<select name="selectDestinatarios" id="selectDestinatarios" multiple="multiple" >
</select>
e uso javaScript para recuperar os childNodes ("nós filhos") do elemento(tag) SELECT
um trecho do código javaScript é este:
//------------------------------------------------------------------------------------
var options = document.getElementById("selectDestinatarios").childNodes;
// e depois eu vejo quantos elementos existem na variavel "options"
alert(options.length);
//------------------------------------------------------------------------------------
teoricamente eu receberia um "alert" dizendo que tenho 3 elementos dentro da variavel "options" (os 3 elementos OPTION)
mais eu recebo um "alert" dizendo que contém 6 elementos,
ai descobri que a culpa disto era porque havia "enters" no final das linhas e o javaScript considera eles como elementos também!
a mesma coisa acontece com "espaços em branco" entre as tags
exemplo:
<select name="selectDestinatarios" id="selectDestinatarios" multiple="multiple" > <option>teste1</option> <option>teste2</option> <option>teste3</option></select>
entre as tags OPTION há espaços em branco e o javaScript retorna eles como se fossem childNodes do elemento SELECT
e de fato são mesmo!
e ai vem meu problema:
Como recuperar somente as tags OPTION com o método "element.childNodes" do elemento SELECT?(há algum outro método?)
eu queria saber se existe uma função que eu possa recuperar somente os OPTIONs dentro do SELECT, sem os "enters e espaços em braco".
se eu fizer desta forma funciona:
<select name="selectDestinatarios" id="selectDestinatarios" multiple="multiple" ><option>teste1</option><option>teste2</option><option>teste3</option></select>
e no java script:
var options = document.getElementById("selectDestinatarios").childNodes;
alert(options.length);
ai sim o "alert" me mostra 3 elementos! (os 3 OPTIONs apenas)
mais eu gostaria de deixar meu script html estruturado,
e não gostaria de usar uma estrutura de decisão (IF-ELSE) para saber se o childNode do elemento SELECT é um "espaço em branco ou enter"(textNodes)
ou se é um elemento OPTION
porque o código em javascript precisa ser executado o mais rapido possível porque eu estou trabalhando com muitos OPTIONs dentro do SELECT,
e comparar cada um seria muito demorado.
resumindo...
há alguma maneira de conseguir recuperar somente os OPTIONs de dentro do SELECT?
sem precisar usar uma estrutura de condição para eliminar os "enters e espaços em branco"?
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.