Hola, tengo un problema sobre los arrays de objetos. El siguiente código crea un array de objetos (eventos), pero no en el momento que termina de ejecutarse el código. Es decir, tengo que poner un breakpoint (uso firefox con firebug) para que eventos.length tenga una longitud de 25 (que es la que tiene que tener). Si no pongo un breakpoint, resulta que eventos.length = 0.
Además, el firebug no siempre recoge el valor del array (relleno por los objetos), debo darle a refrescar (refresh), aunque me han dicho que esto puede ser normal en el firebug, ya que no siempre recoge los valores de las variables a la primera.
Como pueden ver utilizo Jquery v1.4 y el código lo que hace es leer un XML externo y recoge los datos en el array de objetos.
¿Es esto normal?¿A que se debe esto?¿Cómo puedo solucionarlo?
Muchas gracias a todos,
Cita: <html>
<head><title>Prueba de lectura de fichero XML</title></head>
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var eventos = [];
$(function() {
//$('#dentro a').click(function() {
$.ajax({
type: "GET",
url: "prueba.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('contentSet').each(function(){
var evento = {};
//var name_text = $(this).find('name').text()
var id_text =""
$(this).find('sports-content-qualifier').each(function(){
evento.genero = $(this).attr('gender');
evento.indequi = $(this).attr('participant-count');
id_text = evento.genero +' '
id_text= id_text + evento.indequi
}); //cerrar each genero y participantes
var deporte = ""
$(this).find('sports-content-code').each(function(){
deporte = deporte + ' ' +$(this).attr('code-name')
}); // cerrar each deporte
evento.deporte = deporte
id_text = id_text + ' ' + evento.deporte
evento.ronda = $(this).find('tournament-round-metadata').attr('round-name')
id_text = id_text + ' ' + evento.ronda
$(this).find('remoteContent').each( function() {
evento.duracion = $(this).attr('duration')
evento.video = $(this).attr('href')
id_text = id_text + " "+evento.duracion+ " "+evento.video
})
if ($(this).find('event-metadata').attr('start-date-time') !== undefined){
evento.fechainicio = $(this).find('event-metadata').attr('start-date-time')
} else {
evento.fechainicio = $(this).find('tournament-round-metadata').attr('start-date-time')
}
id_text = id_text + ' ' + evento.fechainicio
evento.participantes = []
if (evento.indequi === "individual"){
$(this).find('player-metadata').each(function(){
var participante = {}
participante.nombre = $(this).find('name').attr('first')+" "+ $(this).find('name').attr('last')
participante.pais = $(this).find('home-location').attr('country')
evento.participantes.push(participante);
})
} else {
$(this).find('team-metadata').each(function(){
var participante = {}
participante.nombre = $(this).find('name').text()
participante.pais = $(this).find('home-location').attr('country')
evento.participantes.push(participante);
})
}
$('<li></li>')
.html(id_text)
.appendTo('#dentro ol');
eventos.push(evento); //añadir nuevo elemento a eventos
}); //close each de evento
}
});
alert(eventos.length);
});
</script>
<body>
<div id='dentro'>
<ol></ol>
</div>
</body>
</html>