Foros del Web » Programando para Internet » Javascript »

problema referenciando elemento

Estas en el tema de problema referenciando elemento en el foro de Javascript en Foros del Web. Hola, tengo una pagina index.php mas o menos montada como os pongo abajo y el problema que me encuentro es a la hora de mostrar ...
  #1 (permalink)  
Antiguo 29/10/2005, 12:34
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 20 años, 4 meses
Puntos: 0
problema referenciando elemento

Hola, tengo una pagina index.php mas o menos montada como os pongo abajo y el problema que me encuentro es a la hora de mostrar el efecto de texto javascript dentro de la pagina header.php que es donde esta el id="estado". He probado a declarar la funcion en header, todo en index, nada no me muestra el texto, no se como referenciar a ese elemnto, el javascript funciona porque so lo pongo en un archivo sin includes cumple su cometido. No hagais caso de los errores de escritura que hay ahora, es a modo esquematico para que veais el tema. Al final le he intentado meter ese delay de tiempo en la funcion fun1 para no tener que llamarlo desde el evento onload en body, pero tampoco funciona, me echais un cable?

Código PHP:
// index.php
<html>
<header>
<script language="javascript">

var msg = "Testeando texto tecleado...";


var delay = 0;

var n = 0;

function init() {
  out = msg.substring(0, n);
  document.getElementById('estado').src = out;
  n++;
  if (n > msg.length) {
    n = 0;
    timerID = setTimeout("init()", 4000);
  }
  else 
    timerID = setTimeout("init()", delay);
}
  function fun1()
     {

          window.setTimeout('init()', 5000);
     }
</script>
</head>
<body>
//cabecera
<? include(header.php); ?>
//cuerpo
<table> tal y tal
//pie
<? include (base.php?>
<script tal y tal>
fun1();
</Script>
</body>
</html>
Saludos
  #2 (permalink)  
Antiguo 29/10/2005, 13:59
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
prueba a poner la llamada a fun1() en el onload del body:

<body onload="fun1()">

o en el script

window.onload=fun1

a ver si es eso, sino el problema no es del script(aunque no se lo que hace), pero si hace una llamada a un id y dice que nones, sera que no lo encuentra, .prueba lo que te he dado y comentas.
  #3 (permalink)  
Antiguo 29/10/2005, 16:08
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola programeitor, mira llamando a la función desde el evento onload en el body no funciona, creo que es porque justo despues de la etiquta body cargo el header.php donde esta el div que quiero llenar, esto es lo primero que he intentado, de hecho la función fun1 la he incluido para retardar init(), por si aun no había cargado el header.php al hacer el evento onload.

El error que me muestra la consola es:

Error: document.getElementById("estado") has no properties.

window.onload tampoco.

En la situación tal como la describo arriba, matizar que el div al que me refiero esta en header.php.

A ver si hay algo mas que pueda probar!!

Saludos
  #4 (permalink)  
Antiguo 29/10/2005, 16:44
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
si tralala, seguro que es eso.

Una pregunta. ¿ los includes llegan a cargarse/aparecer en la pagina ?

el error está claro, cuando el script busca ese elemento ,no lo haya.

siento no poder defenderme en PHP, pero creo que el fallo puede venir de ahi.

Saludos.
  #5 (permalink)  
Antiguo 29/10/2005, 16:51
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 20 años, 4 meses
Puntos: 0
Si, los includes se cargan bien, he probado a meter el script tal cual al inicio de index.php y al final del footer, llamar a la funcion, pero nada. Aclarame una cosa por favor, cuando empieza a cargar la pagina y lee la función por primera vez, en ese momento debe de encontrar en la pagina el elemento al que se refiere, no?

Saludos
  #6 (permalink)  
Antiguo 29/10/2005, 17:31
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Cuando se usa onload en el body, se supone que se activa al leerse el cierre del tag body... y si el incluse está antes, entonces no se activaría hasta cargarse del todo...
¿Cómo tienes la parte del include referente al "estado"?
¿Tiene definido el atributi id?...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 29/10/2005, 17:38
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 20 años, 4 meses
Puntos: 0
El atributo id esta definido en header.php, es <div id="estado"></div>, entonces la función la declaro en el index, dentro del header, no estando aun el elemento referenciado cargado en la pagina, ya que justo despues del body es donde hago el include del header.php, pero nada. He probado a meter la funcion en el header.php y poner al final del index window.onload = funcion pero tampoco.

Saludos
  #8 (permalink)  
Antiguo 30/10/2005, 02:20
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 20 años, 4 meses
Puntos: 0
Nada? No hay otro camino para conseguirlo?
  #9 (permalink)  
Antiguo 30/10/2005, 02:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

¿Y si entrecomillas el contenido del include... ?
¿Has visto el resultado en tu explorador... ?

Acabo de probar un fichero sencillito y va muy bien:

Código:
<html>
<body onload="document.getElementById('temporal').style.color = 'blue'">
<? include "rojo.inc"; ?>
</body>
</html>
Y rojo.inc contiene esto:

Código:
<div id=temporal style="color:red">
rojo
</div>
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 30/10/2005, 04:04
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola Caricatos, gracias por tu ayuda, mira los includes estan bien escritos, la pagina se carga bien. Te pongo el inicio de mi index, hasta donde se carga el archivo header.php con su elemento referenciado, quizás hay algun otro elemento influyente.
Código PHP:
<html>
<head>
<title>LAPAGINA</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="estils.css" rel="stylesheet" type="text/css">
<SCRIPT language="JavaScript" SRC="btns_v1/generico.js"></SCRIPT>
<SCRIPT language="JavaScript" SRC="btns_v2/btns_v2.js"></SCRIPT>
<script language="JavaScript" type="text/javascript">
<!-- Hide Script from old browsers
top.window.moveTo(0,0);
top.window.resizeTo(window.screen.availWidth,window.screen.availHeight);
// End hiding script from old bworsers -->
</script>
<script language="JavaScript" type="text/javascript">
<!--
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

//-->
</script>
<script language="JavaScript">
var fondos = ["#386088", "#4E7195", "#6483A2", "#7A95AF", "#90A6BC", "#A6B8CA", "#BCCAD7", "#D2DBE4", "#E8EDF1", "#FFFFFF"];

function cambiarColor(id, n) {
    var yo = document.getElementById(id);
    var _n = parseInt(yo.getAttribute("changingColor"));
    if (n > 0 && n < 9) {
        yo.style.backgroundColor = fondos[n];
        yo.style.color = fondos[9 - n];
        var linea = "cambiarColor('" + id + "', " + (n + _n) + ")";
        setTimeout(linea, 60);
    }
    else    {
        yo.style.color = fondos[9 - n];
        yo.style.backgroundColor = fondos[n];
        document.getElementById(id).setAttribute("changingColor", "0");
    }        
}

function changeColor(id) {
    var estado = document.getElementById(id).getAttribute("changingColor");
    document.getElementById(id).setAttribute("changingColor", "-1");
    if (estado == "0" || estado == null)    cambiarColor(id, 8);
}

function resetColor(id)    {
    var estado = document.getElementById(id).getAttribute("changingColor");
    document.getElementById(id).setAttribute("changingColor", "1");
    if (estado == "0")    cambiarColor(id, 1);
}
</script>
<script language="javascript">
var imagenes=new Array()

imagenes[0]=new Image (204,140);
imagenes[0].src="images/baner_soporte_001.jpg"
imagenes[1]=new Image (204,140);
imagenes[1].src="images/baner_soporte_002.jpg"
imagenes[2]=new Image (204,140);
imagenes[2].src="images/baner_soporte_003.jpg"


cont=0
function presImagen()
{
if (document.all){
document.getElementById('foto').filters.blendTrans.apply()
document.getElementById('foto').src=imagenes[cont].src
document.getElementById('foto').filters.blendTrans.play()
}
else
    {
    document.images.foto.src = imagenes[cont].src
    }
if (cont < imagenes.length-1)
{cont ++}
else
{cont=0}
tiempo=window.setTimeout('presImagen()',5000)
}

//imagen1.filters.blendTrans.apply();
//document.images.imagen1.src = img;
//imagen1.filters.blendTrans.play();

</script>
<script language="javascript">

var msg = "Ejemplo efecto texto tecleado....";


var delay = 0;

var n = 0;

function init() {
  out = msg.substring(0, n);
  this.document.getElementById('estado').src = out;
  n++;
  if (n > msg.length) {
    n = 0;
    timerID = setTimeout("init()", 4000);
  }
  else 
    timerID = setTimeout("init()", delay);
}
  function fun1()
     {

          window.setTimeout('init()', 25000);
     }

</script>
</head>
<body class="base" onLoad=" fun1();presImagen();PrecargarImgs_v2();MM_preloadImages('images/boal.jpg','images/boali.jpg','images/bopan.jpg','images/bopani.jpg','images/bola.jpg','images/bolai.jpg','images/bocontr.jpg','images/bocontri.jpg','images/bocu.jpg','images/bocui.jpg','images/banalojaizqup.gif','images/banalojadereup.gif','images/banreseizqup.gif','images/banresedereup.gif','images/banreseizqup.gif','images/banresedereup.gif');">
<div id="overDiv" style="position: absolute; visibility: hidden; z-index: 1000;"></div>
<script language="JavaScript" src="overlib_mini.js"></script>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr> 
    <td height="100" colspan="2" valign="top"> 
      <?php include("includes/header.php"); ?></td>

// En header.php tengo
<table width="780" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td><div id="estado"></div></td>
        </tr>
</table>
A ver si esto da alguna pista...

Saludos
  #11 (permalink)  
Antiguo 30/10/2005, 05:22
Avatar de tralara  
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 20 años, 4 meses
Puntos: 0
Hay algun error en el codigo o en planteamiento del mismo?
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 05:46.