Ir para conteúdo

POWERED BY:

Arquivado

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

Odair Oliveira_163654

Problemas com array

Recommended Posts

Estou com um problema fiz um código javascript para exibir via AJAX um XML com uma lista:

Meu XML está assim:

[inline]

<?xml version="1.0" encoding="ISO-8859-1"?>
<telas>
<item>
<title>Lorem ipsum</title>
<title>Dolor sit amet</title>
</item>
<item>
<title>Lorem ipsum dolor</title>
<title>Ipsum dolor sit amet</title>
</item>
</telas>

[/inline]

 

Eu quero listar o conteudo da tag <item> (do XML) e colocar dentro do <li> (no meu HTML) a tag <title> (do XML), mas só mostra o conteúdo da primeira tag title, eu preciso que mostre todas as tags <title> que eu tiver no XML.

 

Creio que o problema seja essa parte do meu código:

[inline]

exibir+=tela[valor].getElementsByTagName('title')[0|1].firstChild.nodeValue;[/inline]

 

Como eu posso alterar isso para que funcione de forma adequada (a que eu quero) ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo:

<script>

var str = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\

<telas>\

<item>\

<title>Lorem ipsum</title>\

<title>Dolor sit amet</title>\

</item>\

\

<item>\

<title>Lorem ipsum dolor</title>\

<title>Ipsum dolor sit amet</title>\

</item>\

</telas>";

 

var parser = new DOMParser(),

xml = parser.parseFromString(str,"text/xml"),

items = xml.getElementsByTagName("telas")[0].getElementsByTagName("item"),

i = 0,

max = items.length;

 

 

 

for (;i < max; i++) {

console.log(items.getElementsByTagName("title")[0].innerHTML);

console.log(items.getElementsByTagName("title")[1].innerHTML);

}

</script>

ou vc faz outro loop dentro de items

Compartilhar este post


Link para o post
Compartilhar em outros sites

É mais ou menos isso, mas não consegui adaptar ao meu código, veja como está meu javascript:

 

[inline]

<script type="text/javascript">
//faz a requisição das telas
var soma = -1;
function simulador(){
var contador = document.getElementById("contador").value;
if(contador >=2 ){
document.getElementById("tela").innerHTML = '<ul><li>Não há mais itens a serem exibidos</ul></li>';
}else{
soma = soma + 1;
document.getElementById("contador").value = soma;
var valor = document.getElementById("contador").value;
function ajaxRequest(){
var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE
if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
for (var i=0; i<activexmodes.length; i++){
try{
return new ActiveXObject(activexmodes)
}
catch(e){
//suppress error
}
}
}
else if (window.XMLHttpRequest) // if Mozilla, Safari etc
return new XMLHttpRequest()
else
return false
}
var FazerRequisicao=new ajaxRequest()
if (FazerRequisicao.overrideMimeType)
FazerRequisicao.overrideMimeType('text/xml')
FazerRequisicao.onreadystatechange=function(){
if (FazerRequisicao.readyState==4){
if (FazerRequisicao.status==200 || window.location.href.indexOf("http")==-1){
var xmldata=FazerRequisicao.responseXML //retrieve result as an XML object
var tela=xmldata.getElementsByTagName("item")
var exibir='<ul>'
exibir+='<li>'
exibir+=tela[valor].getElementsByTagName('title')[0].firstChild.nodeValue;
exibir+='</li>'
exibir+='</ul>'
document.getElementById("tela").innerHTML=exibir
}
else{
alert("Ocorreu um erro durante a requisição, tente novamente")
}
}
}
FazerRequisicao.open("GET", "telas.xml", true)
FazerRequisicao.send(null)
}
}
</script>
[/inline]
e a minha marcação:
[inline]
<button style="position: absolute;width: 30px;height: 30px;top: 406px;left: 219px;background: transparent;border: none;border-radius: 100px;cursor: pointer;" type="button" id="contador" value="-1" onclick="simulador();"></button>
<div id="tela" style="position: absolute;width: 150px;padding: 10px;top: 130px;height: 56px;left: 100px;"></div>
[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Odair Oliveira_163654,

 

Vc não aplicou nada do que sugeri.. o seu código continua igual ao de qndo o post começou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o William Bruno falou:

 

Mude:

 

exibir += tela[valor].getElementsByTagName('title')[0].firstChild.nodeValue;

 

Para:
var titulos = tela[valor].getElementsByTagName('title');
for (var t = 0; i < titulos.length; t++) exibir += titulos[t].firstChild.nodeValue;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.overrideMimeType('text/xml');
xmlhttp.open("GET", "telas.xml", true);
xmlhttp.send();


xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState === 4) {
        var $xml = xmlhttp.responseXML,
            $titles = $xml.getElementsByTagName("telas")[0].getElementsByTagName("title"),
            i = 0,
            max = $titles.length;

        for (;i < max;i++) {
            console.log($titles[i].innerHTML);
        }
    }
};
</script>

Saída:

GET http://localhost/~wbruno/telas.xml
	
304 Not Modified - 173ms - a.html (linha 5)

Lorem ipsum
Dolor sit amet
Lorem ipsum dolor
Ipsum dolor sit amet

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.