Foros del Web » Programando para Internet » Javascript »

problema con documen.getElementByid()

Estas en el tema de problema con documen.getElementByid() en el foro de Javascript en Foros del Web. Hola como puedo hacer que document.getElementByid() funcione con ajax tengo un modulo en el cual cree una funcion javascript para pasar el foco a diversos ...
  #1 (permalink)  
Antiguo 08/03/2010, 21:35
Avatar de greenhell  
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 14 años, 2 meses
Puntos: 0
problema con documen.getElementByid()

Hola como puedo hacer que document.getElementByid() funcione con ajax tengo un modulo en el cual cree una funcion javascript para pasar el foco a diversos controles la cual va mas o menos asi
function foco(dato){
document.getElementByid(dato).focus()
}
hasta el momento no habia tenido ningun problema con ella pero al crear un nuevo index empece a llamar a la funcion de la misma manera, para que al abrir un formulario con ajax,pudiera pasar el foco a un control en cuanto carga, en el primer index no hubo ningun problema pero al llamarlo desde el segundo index totalmente independiente con las rutas correctas de los archivos javascript no funciona al cargar me manda un error de ke el documen.getElementByid() es nulo pero esto no deberia ser asi puesto que solo al cargar no pasa el foco al control pero si uso la misma funcion en otra opcion que no sea al cargar el formulario si funciona si manda el foco ya estube buscando y no encuentro una solucion a este problema parece ilogico puesto que el div en el cual se ejecuta el ajax esta como display.block asi ke no es por que el div no este abierto espero me puedan ayudar o sacar de gran duda si tienen un codigo seria de gran ayuda.
de antemano grax
  #2 (permalink)  
Antiguo 09/03/2010, 06:26
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: problema con documen.getElementByid()

¿estas cargando un formulario completo (el HTML) en el innerHTML de la capa?: de ser así te sirve, lo unico que debes tener en cuenta es que al input al que quieres darle el foco tenga la el atributo id correspondiente.

además ¿cuando llamas a la función foco?, tendrias que hacerlo inmediatamente después de que vuelcas el código html al innerHTML de la capa, en el onreadystatechange porque si lo haces desde el onload del body no te servirá, recuerda que el ajax lo ejecutas de forma asincrónica.

seria preferible que postearas parte del código
  #3 (permalink)  
Antiguo 09/03/2010, 08:57
Avatar de greenhell  
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: problema con documen.getElementByid()

claro el input tiene el id y aun asi no funciona como comento en otro de mis index lo llamo y funciona de maravilla, la funcion foco la llamo despues de abrir el formulario con ajax especificamente en el siguiente orden:
al hacer click sobre el vinculo:
1.- cierro un div de menu
2.- abro el div contenedor para el ajax
3.- ejecuto mi funcion para el ajax
4.-paso el foco al control que ya deberia estar cargado
y saz sorpresa marca un error de ke esta nulo ... pero si aun asi con todo y el error doy click en un hipervinculo que cree con la misma funcion y que sirve para pasar el foco ahi si funciona es algo extraño
mira adjunto la parte del codigo del hipervinculo a ver si me puedes hechar una mano
Código HTML:
<a onclick="cierra(menu),abrir(altas_proveedores),FAjax('formulario_altas.php','altas_proveedores','','get'),foco('id_proveedor')">
        <td width="220" align="center" valign="middle" class="bimg"><img src="../../Archivos/Imagen/proveedor.png" alt="Altas Productos" width="128" height="128" /><br /><br />Altas</td></a> 
voy a poner las caracteristicas del input al cual le quiero pasar el foco:
Código HTML:
 <input type="text"  id="id_proveedor" onfocus="this.style.backgroundColor='white'" onblur="this.style.backgroundColor=''" onkeyup="sin_espacios('id_proveedor')" class="cajas_textbox"  maxlength="15" /> 
  #4 (permalink)  
Antiguo 09/03/2010, 09:31
Avatar de greenhell  
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: problema con documen.getElementByid()

muchas gracias ya resolvi el problema como tu dices solo tube ke modifikar un poko la funcion de mi ajax y le agregue el foco en el onready cuando es igual a 4 aka pongo el codigo por si a alguien le sirve:

Código PHP:
function nuevoAjax(){
var 
xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (
e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (
E) {
xmlhttp false;
}
}

if (!
xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return 
xmlhttp;
}
//*****************************************
function FAjax_jr(url,div,control){
var 
t1contenedor;
contenedor document.getElementById(div);
ajax=nuevoAjax();
ajax.open("GET"url,true);
ajax.onreadystatechange=function() {
 if (
ajax.readyState==2)
 {
     
contenedor.innerHTML="Cargando.......";
 }
if (
ajax.readyState==4)
{
    
contenedor.innerHTML ajax.responseText
    
if((control==null) || (control=="")){}
    else{
foco(control)}
}
}
ajax.send(null)



Etiquetas: Ninguno
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:54.