Foros del Web » Programando para Internet » Javascript »

no muestra los elementos en el array

Estas en el tema de no muestra los elementos en el array en el foro de Javascript en Foros del Web. Hola, que tal soy nuevo en el Foro y espero poder ayudar asi como todos puedan ayudarme, bueno este es mi problemita. Estoy extrayendo datos ...
  #1 (permalink)  
Antiguo 20/01/2012, 17:20
 
Fecha de Ingreso: enero-2012
Mensajes: 1
Antigüedad: 12 años, 10 meses
Puntos: 0
no muestra los elementos en el array

Hola, que tal soy nuevo en el Foro y espero poder ayudar asi como todos puedan ayudarme, bueno este es mi problemita.

Estoy extrayendo datos de un JSON a una pagina en HTML codificada en Javascript... los elementos que extraigo del JSON puedo mostrarlos sin ningun problema en mi HTML, lo que quiero es hacer una lista de todos mis registros, pero con la condicion de que mi lista final no tenga ningun elemento repetido, espero que entiendan lo que estoy explicando. Bueno este es mi código:

<html>
<head>
<h3>Upcoming Google Developer Events</h3>

<div id="agenda"></div>

<script type="text/javascript">
function listEvents(root) {
var feed = root.feed;
var entries = feed.entry || [];
var html = ['<ul>'];
var txt = new String();
var y = new Integer();
var a = new String();
var array = new Array();
var array2 = new Array();
var array3 = new Array();

for (var i = 0; i < entries.length; ++i) {

var entry = entries[i];
var title = entry.title.$t;
var start = (entry['gd$when']) ? entry['gd$when'][0].startTime : "";
array[i]=title
html.push('<li>', start, ' ', title, '</li>');

array2[i]=array[i];
}
for (var x = 0; x < array.length -1){
a = array[x];
y=0;
for ( var z = 0; z < array.length -1){
if (array2[z] == a){
y = y+1
}
if (y == 1){
array3[x]=array2[z]
}
document.write(array[z]);
}
}
document.write(i,'<br>',array[i],'</br>');
html.push('</ul>');
document.getElementById("agenda").innerHTML = html.join("");
}
</script>

<script src="http://www.google.com/calendar/feeds/[email protected]/public/full?alt=json-in-script&callback=listEvents">
</script>
</head>
<body onload="listEvents(root)">
</body>
</html>




Mi problema es que cuando ejecuto el HTML en mi navegador, éste solo me muestra "Upcoming Google Developer Events" que es la cabecera principal y lo que no entiendo es porqué no se me muestran los elementos de mi lista... necesito su ayuda urgente, gracias!
  #2 (permalink)  
Antiguo 20/01/2012, 20:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: no muestra los elementos en el array

buenas,
primero que el código es muy difícil de probar sin un ejemplo del json. fíjate que el foro filtró un email siendo parte de la url. supongo que esa url es el json. te recomiendo que muestres un ejemplo del json. y por favor, de ahora en adelante utiliza las etiquetas bbcode apropiadas del foro para mostrar código. pues ayuda a la lectura del mismo. por otro lado, la razón por la que solo vez el título "Upcoming Google Developer Events" es porque estas usando document.write. una vez el navegador "cierra" la escritura -es decir, el navegador cargo por completo el contenido- al invocar document.write se vuelve abrir la escritura pero con el "defecto" de que elimina todo el contenido. el otro detalle de no repetir los elementos, tienes que recorrer por el array y comparar cada elemento. por ejemplo, puedes usar el método filter de los arrays para crear un nuevo array en base a un filtro. en ese filtro comparas si un elemento es igual o distinto al resto de los elementos. por ejemplo...



Código:
// en este ejemplo particular todos los elementos son string;
// se puede adaptar para comparar cualquier tipo de dato;
['second', 'first', 'element', 'first', 'last'].filter(function(v,k,a){
var bool = true;
for(var k = k+1, len = a.length; k < len; k++){
if(v == a[k]) {bool = false; break;}
}
return bool;
});

// resultado: ['second', 'element', 'first', 'last']
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 21/01/2012 a las 23:55

Etiquetas: elementos, google, html, js, muestra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:02.