Nueva pregunta

Pregunta:

Fecha: 21-04-2016 09:08:12 (En Español)

Error Javascript - Uncaught TypeError: Cannot read property 'value' of null[No resuelta]

tengo una pagina que habre un iframe pero me esta dando un error una funcion. cabe mencionar que funciona bien en Internet explorer pero cuando utilizo chrome me da el siguiente error .

Uncaught TypeError: Cannot read property 'value' of null

function CambiarFrame1()
{
	var the_iframe1 = parent.document.getElementById('plfrcg_ele-principal'); 
	the_iframe1.width = '20%';(AQUI MARCA EN ROJO)
	var the_iframe2 = parent.document.getElementById('plfrcg_ele-contenido'); 
	the_iframe2.width = '80%';
}


no se si alguna funcion de esas ya no funciona en chrom o las nuevas versiones de explorer.

gracias por su ayuda.
Etiquetas: Error - iframe - Javascript - Pregunta Votos: 2 - Respuestas: 9 - Vistas: 11 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 21-04-2016 18:15:47 Hola Juan, aparentemente estas teniendo problemas para seleccionar el elemento del DOM al hacer esto:
    var the_iframe1 = parent.document.getElementById('plfrcg_ele-principal');

    La variable the_iframe1 te esta quedando en null.

    Aquí te dejo una función que puedes probar para seleccionar el elemento y no obtener un null:

    /**
     * @param f, iframe or frame element
     * @return Window object inside the given frame
     * @effect will append f to document.body if f not yet part of the DOM
     * @see Window.frameElement
     * @usage myFrame.document = getFramedWindow(myFrame).document;
     */
    function getFramedWindow(f)
    {
        if(f.parentNode == null)
            f = document.body.appendChild(f);
        var w = (f.contentWindow || f.contentDocument);
        if(w && w.nodeType && w.nodeType==9)
            w = (w.defaultView || w.parentWindow);
        return w;
    }

    Fuente: http://stackoverflow.com/questions/935127/how-to-access-parent-iframe-from-javascript

    Saludos!
      Votos: 3 - Link respuesta
     
  • Fecha: 22-04-2016 07:36:08 gracias
    yo la verdad no soy muy bueno en javascript y no encuentro como incorporar esa función al código que te muestro..

    te agradezco por tu respuesta
      Votos: 0 - Link respuesta
     
  • Fecha: 22-04-2016 07:46:00 yo lo implemente asi pero me retorna error

    function CambiarFrame1()
    {
    	var the_iframe1 = parent.document.getElementById('plfrcg_ele-principal1'); 
    	 the_iframe1.document = getFramedWindow(the_iframe1).document;
    		
    	the_iframe1.width = '20%';
    	var the_iframe2 = parent.document.getElementById('plfrcg_ele-contenido'); 
    	the_iframe2.width = '80%';
    }
    
    
    function getFramedWindow(f)
    {
        if(f.parentNode == null)  (AQUI EL ERROR)
            f = document.body.appendChild(f);
        var w = (f.contentWindow || f.contentDocument);
        if(w && w.nodeType && w.nodeType==9)
            w = (w.defaultView || w.parentWindow);
        return w;
    }
    


    pero me retorna error
    Uncaught TypeError: Cannot read property 'parentNode' of null
      Votos: 0 - Link respuesta
     
  • Fecha: 22-04-2016 11:42:55 Hola Juan, el error javascript Uncaught TypeError: Cannot read property 'value' of null se debe a que se quiere acceder a una propiedad de un objeto inexistente (null).

    Lo puedes salvar con una simple validación:
    function CambiarFrame1() {
        var the_iframe1 = parent.document.getElementById('plfrcg_ele-principal'); 
        if (the_iframe1 != null) {
            the_iframe1.width = '20%';
        }
        var the_iframe2 = parent.document.getElementById('plfrcg_ele-contenido');
        if (the_iframe2!= null) {
            the_iframe2.width = '80%';
        }
    }


    Pero estimo que lo que quieres hacer (mas allá del error) es tomar control de los iframes desde javascript, por lo que voy a aprovechar un ejemplo de iframes que dí hace un tiempo para ayudarte con tu problema: http://www.phpcentral.com/pregunta/31/como-hacer-una-web-flotante-usando-frames-en-php#resp_250cf8b51c773f3f8dc8b4be867a9a02

    Cambios al ejemplo:
    Le agregué un botón que ejecute el código javascript de la pregunta original, como así también un poco de color para que se vea a simple vista el cambio de tamaño, y un segundo botón para diferenciar la referenciación desde adentro de un iframe a otro iframe.

    El código Javascript final es el siguiente:
    function cambiarIframes() {
        var the_iframe1 = document.getElementById('left');
        the_iframe1.width = '20%';
        var the_iframe2 = document.getElementById('right');
        the_iframe2.width = '80%';
    }
    


    El código del segundo botón es:
    function cambiarIframe1() {
        var the_iframe1 = window.parent.document.getElementById('left');
        the_iframe1.width = '80%';
    }
    


    Aquí la demo: http://www.phpcentral.com/ejemplos/iframe/frame2columns/

    Notas: la clave esta en la referencia del elemento del DOM "document".
    referenciar el document desde la web principal, fácil:
    document.xxxxx

    referenciar el document desde el iframe, también fácil, pero debemos trabajar desde el elemento window:
    window.parent.document.xxxxx


    Saludos,
      Votos: 1 - Link respuesta
     
  • Fecha: 27-04-2016 19:03:41 muchas gracias fernando
    coloque esa validacion y me funciono.. ahora me dio un error parecido en otro lado pero no encuentro como poner esa validacion.. imprimo un javascript con php.. tu podrias ayudarme a corregirlo.. te lo agredeceria..

    <?php	
    		echo "<script>";
    printf("parent.document.getElementById('pTOTAL_PLAN').value=%s",TotalPlan($pANYO,$pDEPENDENCIA,0,0,0,0,0,0,0));
    		echo "</script>";	
    		
    	
    	?>



    me da el mismo error Uncaught TypeError: Cannot read property 'value' of null como podria corregir ese codigo...

    gracias.
      Votos: 1 - Link respuesta
     
  • Fecha: 28-04-2016 03:39:52 Hola Juan, me alegra que mi respuesta te haya sido de ayuda, ten presente que si the_iframe1 igual a null es porque el elemento iframe no se pudo seleccionar, y en consecuencia no se podrá redimencionar como tu querías, salva el error "Uncaught TypeError", pero no es una solución, lo correcto es entender por que en algún caso si se puee seleccionar el iframe y en otro no, por eso te recomendaba modificar la base (parent.document.....) y agregar la validación como opcional ante un error inesperado.

    Con respecto a este nuevo problema que comentas, verifica en tu código html si existe el elemento con el atributo id="pTOTAL_PLAN", si existe prueba modificar el código javascript poniendo como base "window.parent.document.xxxxx" y si sigue sin funcionar prueba tan solo con "document.xxxxx"

    Veamos tu código modificado
    Opción 1:
    <?php    
        echo "<script>";
        printf("window.parent.document.getElementById('pTOTAL_PLAN').value=%s",TotalPlan($pANYO,$pDEPENDENCIA,0,0,0,0,0,0,0));
         echo "</script>";    
    ?>


    Opción 2:
    <?php    
        echo "<script>";
        printf("document.getElementById('pTOTAL_PLAN').value=%s",TotalPlan($pANYO,$pDEPENDENCIA,0,0,0,0,0,0,0));
         echo "</script>";    
    ?>


    Luego nos cuentas, saludos y buen código!
      Votos: 1 - Link respuesta
     
  • Fecha: 28-04-2016 11:37:00 muchas gracias fernando verificando el elemento atributo pTOTAL_PLAN y efectivamente existe lo unico es que no tenia la variable id entonces chrome si saca error.. ya solucione los dos errores .. ahora el problema que tengo es que no me levanta el iframe y lo malo es que no da ningun error..   Votos: 0 - Link respuesta
     
  • Fecha: 28-04-2016 11:47:52 de esta forma se manda a llamar ese proceso

    printf(' aux3 = insFld(aux2, gFld("<font class=OOPERATIVOS>OBJETIVOS OPERATIVOS</font>", "plpppo_ele-ooperativos.php?pANYO=%s&pDEPENDENCIA=%s&pOESTRATEGICO=%s&pORDERBY=%s&pMULTILINEA=%s","Seleccione uno o mas de acuerdo a la funcion que realiza su dependencia..."));', $pANYO, $pDEPENDENCIA, $row[plcgoe_id], "1 ASC", $pMULTILINEA);
    


    al precionar esto manda a llamar el php que describí al principio...
      Votos: 0 - Link respuesta
     
  • Fecha: 29-04-2016 13:55:54 Si pudieras compartir tu codigo html , para ver el iframe y los id , saludos   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com