Foros del Web » Programando para Internet » Javascript »

array javascript

Estas en el tema de array javascript en el foro de Javascript en Foros del Web. Holas buenas, una consulta tengo este array visto por el console.log chrome [<li class=​"7">​…​</li>​,<li class=​"8">​…​</li>,<li class=​"9">​…​</li>​,<li class=​"10">​…​</li>] cuando intento acceder a cada uno e insertarlo ...
  #1 (permalink)  
Antiguo 06/04/2012, 13:19
 
Fecha de Ingreso: mayo-2011
Mensajes: 171
Antigüedad: 12 años, 11 meses
Puntos: 32
array javascript

Holas buenas, una consulta tengo este array

visto por el console.log chrome

[<li class=​"7">​…​</li>​,<li class=​"8">​…​</li>,<li class=​"9">​…​</li>​,<li class=​"10">​…​</li>]


cuando intento acceder a cada uno e insertarlo en una UL lo que imprime es

[object HTMLLIElement][object HTMLLIElement][object HTMLLIElement][object HTMLLIElement]

como podría hacer esto..
  #2 (permalink)  
Antiguo 06/04/2012, 13:40
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
Puntos: 1485
Respuesta: array javascript

¡buenas!
no entiendo mucho. ¿cómo obtienes el array? ¿cómo insertas el elemento? en dónde se imprime el texto, ¿en la consola o en el navegador? ¿qué exactamente es lo que quieres hacer? entiendo que quieres agregar elementos LI a un UL, pero no está claro de donde viene ni mucho menos cómo lo estás haciendo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 06/04/2012, 14:01
 
Fecha de Ingreso: mayo-2011
Mensajes: 171
Antigüedad: 12 años, 11 meses
Puntos: 32
Respuesta: array javascript

Cita:
Iniciado por zerokilled Ver Mensaje
¡buenas!
no entiendo mucho. ¿cómo obtienes el array? ¿cómo insertas el elemento? en dónde se imprime el texto, ¿en la consola o en el navegador? ¿qué exactamente es lo que quieres hacer? entiendo que quieres agregar elementos LI a un UL, pero no está claro de donde viene ni mucho menos cómo lo estás haciendo.

vale, mira tengo un array que lo construllo con un for
Código Javascript:
Ver original
  1. ....
  2. for(li=0;li<lis.length;li++){
  3.         n++;tamLis+=js.tam(lis[li]).an;
  4.         if(tamLis<tamVis){
  5.             tamLisT+=js.tam(lis[li]).an+2;         
  6.         } else {
  7.             liOc[n]=lis[li]; // aki se guarda el array que son LI
  8.         }
  9.     }
  10. ...
luego viendo en consola este array liOc es:
[<li class=​"7">​…​</li>​,<li class=​"8">​…​</li>,<li class=​"9">​…​</li>​,<li class=​"10">​…​</li>]

para imprimir el array dentro del UL

recorro el array
Código Javascript:
Ver original
  1. ...
  2. var mus='';
  3.     for(ic=0;ic<liOc.length;ic++){
  4.         mus+=liOc[ic];     
  5.     }
e inserto con innerHTML al UL la variable mus
y como resultado de la impresión sale: [object HTMLLIElement][object HTMLLIElement][object HTMLLIElement][object HTMLLIElement]

en el código quedaría
Código HTML:
Ver original
  1. ...
  2. <ul>[object HTMLLIElement][object HTMLLIElement][object HTMLLIElement][object HTMLLIElement]</ul>
  3. ...

cuando tendría que quedar
Código HTML:
Ver original
  1. ...
  2. <ul>
  3. <li class=&#8203;"7"></li>
  4. <li class=&#8203;"8"></li>
  5. <li class=&#8203;"9"></li>
  6. <li class=&#8203;"10"></li>
  7. </ul>
  8. ...
  #4 (permalink)  
Antiguo 06/04/2012, 14:36
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
Puntos: 1485
Respuesta: array javascript

la forma que lo agregas está mal. DOM no es lo mismo que trabajar con string. cuando obtienes un elemento del DOM, dicho elemento representa un objeto. si intentas concatenarlo a un string lo que sucede es que javascript coerce el objeto a string para poder realizar la operación de concatenar. por eso todos los elementos los ve como [object HTMLLIElement]. tienes que decidir como hacerlo, completamente por métodos DOM o por strings de código html.

si decides por strings, tienes que tomar el código html de ese elemento, concatenarlo a la variable, y luego agregarlo al destino. es decir, para obtener el código lees la propiedad innerHTML o outerHTML. si lo haces por innerHTML, también tienes que concatenarle al inicio y final del string las etiquetas de apertura y cierre LI, ya que innerHTML sólo lee el contenido interno del elemento. con outerHTML no tienes que preocuparte porque este incluye al elemento en si mismo. sin embargo, tengo mis dudas de si la mayoría de los navegadores tienen soporte para este último.

si lo haces completamente por DOM, debes considerar si quieres mover los elementos de su origen al destino. una vez tengas las referencias de los elementos a incluir, pasa cada referencia por el método appendChild del elemento destino. si lo que quieres es copiar el elemento al nuevo destino, entonces primero tienes que clonar el elemento con el método cloneNode desde el elemento que quieres copiar. el método te devuelve un clon y lo agregas al destino de la misma forma anterior, appendChild.

Código:
var destino, origen; // asumiendo que ambas variables contiene la referencia de los elementos;
var lista; // asumiendo que lista es el array de elementos LI;

// para mover del origen al destino;
destino.appendChild(lista[#]); // lo habitual seria ubicar esta linea en un bucle para recorrer el array

// para clonar el elemento y agregarlo al destino;
// desde el bucle que agrega los elementos al array;
lista.push(LI[#].cloneNode(true)); // asumiento que LI[#] es un elemento <LI> en cada iteracion;
// para agregarlo al destinto haces como el ejemplo anterior, recorres el array y pasas cada elemento por appendChild;

// o bien puedes agregar el elemento en un solo bucle al momento de clonar;
destino.appendChild(LI[#].cloneNode(true));
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: insercción, matriz
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 21:08.