Foros del Web » Programando para Internet » Javascript »

no encuentra los elementos

Estas en el tema de no encuentra los elementos en el foro de Javascript en Foros del Web. De antemano disculpen a los moderadores del Foro, volvere a explicar mi tema de una manera mas ordenada por que si querer ya esta en ...
  #1 (permalink)  
Antiguo 18/06/2007, 10:41
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 4 meses
Puntos: 3
no encuentra los elementos

De antemano disculpen a los moderadores del Foro, volvere a explicar mi tema de una manera mas ordenada por que si querer ya esta en dos Preguntas y quiesiera hacerlas una sola...

Creo elementos CheckBox mediante la función:

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(){alert(this.name);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++;
}
como ven, agrego esos elementos a una tabla, que tambien cree dinamicamente....

entonces, cuando mando a llamar la funcion :

Código HTML:
function marcar(obj){// Obj es el objeto de un campo TEXTO
	var aler='No existe la categoría';
	for(var c=0;c<num;c++){
		nombre=eval("document.getElementById('cellC_"+c+"_0').lastChild.nodeValue");//Obtengo el último valor de un nodo tipo texto	
		if(nombre==obj.value){//Comparo si el valor del campo texto
//es igual al de nombre
			var ch = document.getElementsByName("Cat_"+c);// saco el objeto del CheckBox 
			alert('ch : '+ ch.length);// este alert me manda 0 , por lo que se que no hay objetos con ese nombre
//y no entiendo por que si en la anterior funcion fueron creados
			ch[0].checked=true;
			aler='';	
		}
	}
	if(aler!='')
		alert(aler);
}
a vista de buen cubero, ustedes que creen que pueda ser, estoy seguro de que lo que me ha comentado DERQUENUKE y MABORAK funciona, pero a mi me truena por que no me encuentra nada al crear el objeto y lo se por que me regresa 0, por favor, ayudenme, no se que hacer :(
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 18/06/2007, 10:56
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 10 meses
Puntos: 1284
Re: no encuentra los elementos

Hola:

No sé porqué en algunos navegadores tengo hay problemas con el atributo name (explorer por ejemplo), para crearlo es mejos usar el método setAttribute("name", valor_name)... pero a pesar de ello explorer cuando hace el array getElementsByName, en vez de hacerlo desde el name lo hace del id (como si fuera posible repetir id's)... bueno, en resúmen, siempre termino haciendo piruetas para referenciar a los elementos por el id u otro atributo, tal vez el className...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 18/06/2007, 11:11
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: no encuentra los elementos

mmmm que mal plan, como seria lo del className? y no entiendo por que si a los checks les puse un onclick el cual me manda un alert con su name si me lo da bien, ya me esta desesperando :(
__________________
Wow! No se que decir...

Última edición por zyon; 18/06/2007 a las 11:32
  #4 (permalink)  
Antiguo 18/06/2007, 11:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 10 meses
Puntos: 1284
Re: no encuentra los elementos

Hola:

No tengo claro de donde lo tienes que usar, pero lo voy a plantear con un par de líneas...

Código:
var ch = document.getElementsByName("Cat_"+c);// saco el objeto del CheckBox 
alert('ch : '+ ch.length);// este alert me manda 0 , por lo que se que no hay objetos con ese nombre
Con este par de líneas debería devolver un ch.length = 1

Código:
conteo = 0;
var checkes = document.getElementsByTagName("input");
for (i = 0, total = checkes.length; i < total; i ++)
  if (checkes[i].type == "checkbox" && checkes[i].className == "Cat_" + c)
    conteo++;
alert("ch :" + conteo);
Para la asignación es en vez de usar elemento.name, se usaría elemento.className...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 18/06/2007, 11:43
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: no encuentra los elementos

Probe lo que me pasaste, y truena cuadno entra a la parte de :

checkes[i].className == "Cat_" + c

hay un problema con ese nombre o no se que pasa, ya tambien modifique mi codigo para que los id me los diera igual a los nombres, osea CAt_0,Cat_1, etc, y ni asi puede reconocer los objetos, hay un classId?
__________________
Wow! No se que decir...
  #6 (permalink)  
Antiguo 18/06/2007, 12:49
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: no encuentra los elementos

hey por fin funciono, lo único que hice fue hacer que los id'0s y names tubieran el mismo valor, no se por que, pero asi me funciono, quedo asi mi funcion:

Código HTML:
function marcar(obj){
	var aler='No existe la categoría';
	for(var c=0;c<num;c++){
		nombre=eval("document.getElementById('cellC_"+c+"_0').lastChild.nodeValue");	
		if(nombre==obj.value){

			var ch = document.getElementsByName('Cat_'+c);
			if(ch[0].checked==true){
				ch[0].checked=false;
			}else{
				ch[0].checked=true;
			}			objeto=document.getElementById('Cat_'+c);
			hit=objeto.value;
            ins_del_lista2(hit,nombre,objeto);
			aler='';	
		}
	}

	if(aler!='')
		alert(aler);
}
Muchas gracias a todos por su ayuda y comentarios!!
__________________
Wow! No se que decir...
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 20:58.