Foros del Web » Programando para Internet » Javascript »

Encontrar objeto introducido mediante javascript

Estas en el tema de Encontrar objeto introducido mediante javascript en el foro de Javascript en Foros del Web. Antes que nada, decir que llevo días buscando soluciones por la red a mi problema y no he encontrado nada.... Es posible que no haya ...
  #1 (permalink)  
Antiguo 15/02/2011, 04:35
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 9 meses
Puntos: 0
Encontrar objeto introducido mediante javascript

Antes que nada, decir que llevo días buscando soluciones por la red a mi problema y no he encontrado nada.... Es posible que no haya sabido buscar lo suficientemente bien y este tema ya haya sido contestado anteriormente en estos foros. Si es asi, pido perdón
Intentaré explicar el problema que tengo y las diferentes soluciones que he probado para solucionarlo. He probado tantas que no se si poner más de una podría hacer que todo el post pase a ser ininteligible. Si este es el caso, tambien pido perdón .

Funcionamiento deseado (SIMPLIFICADO):
- Con un botón introducir una nueva fila en una tabla. En una celda de esta fila, se introduce un componente del tipo checkbox.
- Con otro botón, poder ver el estado del checkbox (atributo "checked").

Lo de introducir la fila no me da ningun problema (lo he hecho de varias maneras, lo podreís ver a continuación).
El problema es buscar el valor del atributo checked. Creo que el problema está relacionado con el DOM el cual no reconoce lo que introduzco como un "input".

A continuación os pongo las diferentes formas que he probado para:

Introducir fila en la tabla:
Forma 1:
Utilizo innerHTML he introduzco a "pelo" el componente checkbox.
Código:
	var numero = 0;
	this.addNewRow = function(familia, marca){
	  // obtenemos acceso a la tabla por su ID
	  var TABLE = document.getElementById("tabla");
	  // obtenemos acceso a la fila maestra por su ID
	  //var TROW = document.getElementById("celda");
	  // tomamos la celda
	  //var content = TROW.getElementsByTagName("td");
	  // creamos una nueva fila
	  var newRow = TABLE.insertRow(-1);
	  newRow.id= 'colum'+numero;
	  // creamos una nueva celda
	  var newCell = newRow.insertCell(newRow.cells.length)
	  // creamos una nueva ID para el examinador
	  newID = 'file_' + (numero);
	  newCell.id=newID;
	  txt = '<input type="checkbox" id="' + numero + '">'
	  newCell.innerHTML = txt;
	  newRow.appendChild(newCell);  
	  document.getElementById('tabla').appendChild(newRow); 
	   
	  numero = numero+1;
}

Forma 2:
No utilizo innerHTML, lo he hecho pensando que "quizás" innerHTML sólo te introduce un texto que luego el navegador puede interpretar pero que en el DOM no es reconocido como, en este caso, un checkbox. Locuras mias jajaja
Código:
 
        var numero = 0;
	this.addNewRow = function(familia, marca){
	  // obtenemos acceso a la tabla por su ID
	  var TABLE = document.getElementById("tabla");
	  // creamos una nueva fila
	  var newRow = TABLE.insertRow(-1);
	  newRow.id= 'colum'+numero;
	  // creamos una nueva celda
	  var newCell = newRow.insertCell(newRow.cells.length)
	  newID = 'file_' + (numero);
	  newCell.id=newID;

	  txt = document.createElement('input');
	  alert("txt: " + txt);
	  txt.type= 'checkbox';
	  alert("txt.type: " + txt.type);
	  txt.checked=true;
	  txt.name="borrar";
	 newCell.appendChild(txt);
	  newRow.appendChild(newCell); 
	  document.getElementById('tabla').appendChild(newRox);
	  numero = numero+1; 	  	 
}
Encontrar checkbox:

Forma 1:
Lo he simplificado lo máximo posible, simplemente busco el checkbox (o en su defecto "newRow", ninguna de las dos busquedas me funciona), ya que en cuanto lo encuentre, todo deberia funcionar
Código:
	this.buscar =function(){

		var busc = document.getElementById('newRow');
		alert("busc= " + busc);
	}
Forma 2:
Aquí busco el numero de entradas de la tabla (y que funciona bien) y saco el innerHTML de la celda que busco (también me va bien). El problema es que no encunetra ningun "input", y lo necesito encontrar para poder ver sus atributos.
Código:
         this.verElementos =function(){
		var i=1;
		var encontrado=0;
		var TABLE = document.getElementById("tabla");		
                //numero entradas tabla
                alert("length= " + TABLE.rows.length);
                //innerHTML entrada selecciona
		alert(TABLE.rows[1].cells[0].innerHTML);
                //busqueda checkbox de la primera nueva entrada que he hecho 
                //No funciona ni por tag, ni por id, ni por nada...
               alert("antes: " + tabla.rows[1].cells[0].getElementByTag("input"));

        }
Espero que se haya podido entender. Las diferentes soluciones que he posteado las acabo de "picar" (puede haber algun error de sintaxis) basandome a las implementaciones que he probado en estos dias. Es para que os hagais una idea de lo que he hecho, ya que es posible que por algun error de sintaxis estas lineas de condigo no funcionen del todo bien.

Alguien podría ayudarme con mi problema?

Gracias por todo, saludos!!
  #2 (permalink)  
Antiguo 15/02/2011, 05:35
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, 7 meses
Puntos: 1485
Respuesta: Encontrar objeto introducido mediante javascript

buenas...

asumiendo que la sintaxis estan correctas, no veo porque no te funciona al menos la segunda alternativa. lo primero que debes revisar es la consola de error. si hay algun problema este te lo debe de indicar. si no hay ningun error, en el segundo codigo que intenta capturar el checkbox debes ver que el alerta de la celda muestra el <input>. lo que probablemente no debas apreciar es el valor de checked. la razon exacta no la conozco pero mi conclusion es la siguiente. si javascript imprime el atributo checked="checked" como representacion de input.checked = true, entonces se asume que ese es el estado de facto. ¿que implicacion tiene? si tuvieras un formulario dinamico que cambia los estados de los campos segun ciertas acciones del usuario y luego el usuario decide reestablecer (reset) el formulario, dicho campo quedaria intacto ante el reinicio. lo mismo aplica con otras propiedades/atributos de los elementos. en fin, para obtener el estado del checkbox primero tienes que hacer referencia al campo y luego leer la propiedad. en el segundo codigo se supone que debes obtener la referencia mediante getElementsByTagName.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 15/02/2011, 05:36
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Encontrar objeto introducido mediante javascript

Ya lo e conseguido :D Tiene uev.... la cosa, que despues de todos los dias que llevo buscando info, lo consiga hacer funcionar despues de pedir ayuda en un foro xd
Aquí os dejo la solución por si a alguien le sirve de algo (para conseguirlo, ice lo tipico, empezar desde un programa MUY simple, hacer que funcionase y despues pasarlo a mi codigo):

Crear fila:
Código:
this.addNewRow = function(){
		var tabla = document.getElementById("tabla");
		var newRow = tabla.insertRow(-1);
		var newCell = newRow.insertCell(newRow.cells.length)
		newID = 'file_' + (numero);
		newCell.id=newID;	 

		var nuevoInput = document.createElement("input");
		nuevoInput.align = "center";
		nuevoInput.type="checkbox";
		nuevoInput.id="miCheck"+numero;
		newCell.appendChild(nuevoInput);
		newRow.appendChild(newCell);
		document.getElementById("tabla").appendChild(newRow);
		numero++;
		
	}
Buscar checkbox:
Código:
	this.buscar =function(){

		var miCheck = document.getElementById("miCheck0");
		alert("Estado: " + miCheck.checked);
	}
  #4 (permalink)  
Antiguo 15/02/2011, 07:37
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Encontrar objeto introducido mediante javascript

Cita:
Iniciado por zerokilled Ver Mensaje
buenas...

asumiendo que la sintaxis estan correctas, no veo porque no te funciona al menos la segunda alternativa. lo primero que debes revisar es la consola de error. si hay algun problema este te lo debe de indicar. si no hay ningun error, en el segundo codigo que intenta capturar el checkbox debes ver que el alerta de la celda muestra el <input>. lo que probablemente no debas apreciar es el valor de checked. la razon exacta no la conozco pero mi conclusion es la siguiente. si javascript imprime el atributo checked="checked" como representacion de input.checked = true, entonces se asume que ese es el estado de facto. ¿que implicacion tiene? si tuvieras un formulario dinamico que cambia los estados de los campos segun ciertas acciones del usuario y luego el usuario decide reestablecer (reset) el formulario, dicho campo quedaria intacto ante el reinicio. lo mismo aplica con otras propiedades/atributos de los elementos. en fin, para obtener el estado del checkbox primero tienes que hacer referencia al campo y luego leer la propiedad. en el segundo codigo se supone que debes obtener la referencia mediante getElementsByTagName.

Gracias por la respuesta :D
Finalmente encontré le problema. No se puede buscar un elemento partiendo de una fila (" tabla.rows[1].cells[0].getElementByTag("input") "). Creo que también lo que me paso es que de tanto acer pruebas, acabé teniendo algun error por ahí que hacia k no me funcionara bien.
Como ya e dixo, con la función que e puesto en el post anterior arreglé el problema, y la verda es k la idea que me a funcionado es practicamente la misma que e utilizado todas las veces, lo k partiendo de cero para kitarme errores k llevaba arrastrando.
  #5 (permalink)  
Antiguo 15/02/2011, 07:55
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, 7 meses
Puntos: 1485
Respuesta: Encontrar objeto introducido mediante javascript

Cita:
No se puede buscar un elemento partiendo de una fila (" tabla.rows[1].cells[0].getElementByTag("input") ").
se puede, lo que pasa es que tienes mal el nombre de la funcion... es document.getElementsByTagName.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 15/02/2011, 11:13
 
Fecha de Ingreso: febrero-2011
Mensajes: 10
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Encontrar objeto introducido mediante javascript

XD
No me abia dado cuenta jaja
Pero lo del tag fue lo ultimo k puse. Tambien lo busque por el id y no lo encontraba.
Quizas también lo pondria mal jejej

Etiquetas: encontrar, objeto
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 06:58.