Foros del Web » Programando para Internet » Javascript »

por q es indefinido?

Estas en el tema de por q es indefinido? en el foro de Javascript en Foros del Web. Que tal, creo varios checkBox mediante un createElement(), les asigno , id, name, value, etc, etc, necesito accesar a ellos mediante el name y lo ...
  #1 (permalink)  
Antiguo 18/06/2007, 08:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Pregunta por q es indefinido?

Que tal, creo varios checkBox mediante un createElement(), les asigno , id, name, value, etc, etc, necesito accesar a ellos mediante el name y lo hago asi con un for:

Código HTML:
for(var c=0;c<num;c++){
ch=eval("document.FRM_ing_plan.Cat_"+c);//los names van Cat_0, Cat_1, etc...
alert('ch - ' + ch);
}
entonces según en el alert deveria darme [Object], pero me da undefined, por que? ojala me puedan ayudar
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 18/06/2007, 08:48
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 7 meses
Puntos: 45
Re: por q es indefinido?

Hola zyon!

Hmmm, deberías poner el código para generar los check... Supongo que los habrás adjuntado como hijos del formulario FRM_ing_plan, y que sus nombres son correctos.

Otra forma de acceder a ellos sin que estén adjuntos al documento es así:
Código PHP:
var miCheck document.createElement("input"); 
Entonces miCheck actúa como una referencia al objeto, sin que esté en el documento. Podrías también hacerlo así.

Otra cosa es que no hace falta utilizar el eval(), evítalo en la medida de lo posible ya que dificulta la lectura del código:
Código PHP:
document.FRM_ing_plan["Cat_"+c
será suficiente.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 18/06/2007, 09:09
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: por q es indefinido?

Bueno, para crear lo hago asi:

Código HTML:
function generaLista(obj,obj1,numFun){// Esta funcion me crea el listado de CheckBox
							   // de hitos existentes...							   							   
	var elemento=document.createElement('INPUT');
	elemento.type='checkbox';
	elemento.id=obj;
	elemento.value=obj1;
	
	if(numFun==1){
		elemento.name="Hit_"+num;
		elemento.onclick=function(){ins_del_lista(obj,obj1,this);};	
		celda=eval("document.getElementById('cellH_"+num+"_0')");
	}else{
		elemento.name="Cat_"+num;
		elemento.onclick=function(){ins_del_lista2(obj,obj1,this);};
		celda=eval("document.getElementById('cellC_"+num+"_0')");	
	}
			
	celda.appendChild(elemento);
	var dato = document.createTextNode(obj1);
	celda.appendChild(dato);
	num++;
}
y lo agrego a una tabla que esta dentro de mi formulario, no se si hay este el error... y probe tu sugerencia de quitar el eval, pero sigue igual
__________________
Wow! No se que decir...
  #4 (permalink)  
Antiguo 18/06/2007, 09:22
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 7 meses
Puntos: 45
Re: por q es indefinido?

Procura que tus ejemplos puedan probarse al postearlos.

Yo no he tenido ningún problema en ejecutar algo así:
Código PHP:
<form name="FRM_ing_plan">
    <
table border="1">
        <
tr>
            <
td id="cellC_0_0"></td>
        </
tr>
        <
tr>
            <
td id="cellC_1_0"></td>
        </
tr>
        <
tr>
            <
td id="cellC_2_0"></td>
        </
tr>
    </
table>
</
form>

<
script>


var 
num=0;
function 
generaLista(obj,obj1,numFun){// Esta funcion me crea el listado de CheckBox
                               // de hitos existentes...                                                              
    
var elemento=document.createElement('INPUT');
    
elemento.type='checkbox';
    
elemento.id=obj;
    
elemento.value=obj1;
    
    if(
numFun==1){
        
elemento.name="Hit_"+num;
        
//elemento.onclick=function(){ins_del_lista(obj,obj1,this);};    
        
celda=eval("document.getElementById('cellH_"+num+"_0')");
    }else{
        
elemento.name="Cat_"+num;
        
//elemento.onclick=function(){ins_del_lista2(obj,obj1,this);};
        
celda=eval("document.getElementById('cellC_"+num+"_0')");    
    }
            
    
celda.appendChild(elemento);
    var 
dato document.createTextNode(obj1);
    
celda.appendChild(dato);
    
num++;
}

// genero
generaLista("Cat_0""casa"0);
generaLista("Cat_1""coche"0);
generaLista("Cat_2""tele"0);


for(var 
i=0i<numi++) {
    
document.FRM_ing_plan["Cat_"+i].checked="checked";
}

</script> 

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 09:59.