Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: javirk en 1 Mayo 2012, 12:18 pm



Título: Cambiar contenido div con ID variable javascript
Publicado por: javirk en 1 Mayo 2012, 12:18 pm
Hola, tengo un problema que no sé solucionar, y que me da el siguiente error según la consola de Chrome: "Uncaught TypeError: Cannot set property 'innerHTML' of null"
Tengo esto en el código:
Código
  1. <html>
  2. <head>
  3.  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
  4. <script type="text/javascript">
  5. function like(userid, peliid, mddcartel)
  6. {
  7.  if (window.XMLHttpRequest)
  8.  {// code for IE7+, Firefox, Chrome, Opera, Safari
  9.  xmlhttp=new XMLHttpRequest();
  10.  }
  11. else
  12.  {// code for IE6, IE5
  13.  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  14.  }
  15. xmlhttp.onreadystatechange=function()
  16.  {
  17.  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  18.    {
  19.    document.getElementById(mddcartel).innerHTML=xmlhttp.responseText;
  20.    }
  21.  }
  22.  xmlhttp.open("GET", "like.php?uid="+userid+"&pid="+peliid, true);
  23.  xmlhttp.send();
  24. }
  25.  
  26. </script>
  27. </head>
  28. <body>
  29. <?php
  30. $gusta = FALSE;
  31. $userid = "1";
  32. $peliid = "3";
  33. $mddcartel = md5($peliid);
  34.  echo "<div id='$mddcartel'>";
  35.  echo "<a href='#' onclick='like($userid, $peliid, $mddcartel) '>Me gusta</a>";
  36.  echo "</div>";
  37. ?>
  38. </body>
  39. </html>
  40.  
Total, que tengo un div con nombre variable (aquí no, pero en el completo sí). Le paso a la función like el nombre de ese div como tercer parámetro, y se lo pongo en la función ajax a 
"document.getElementById(mddcartel).innerHTML=xmlhttp.responseText;" Pero no me coge eso de "mddcartel" como una variable, sino como el nombre del div, y yo no quiero eso. Si cambio la línea esa y donde pone mddcartel pongo el nombre del div entre comillas me va bien.

Un saludo y gracias de antemano!


Título: Re: Cambiar contenido div con ID variable javascript
Publicado por: Valkyr en 5 Mayo 2012, 19:22 pm
No estoy muy seguro pero, ¿puede ser que se deba a error de las instrucciones echo? o mejor dicho, que no estés imprimiendo el contenido de las variables si no el nombre de la variable en sí mismo.

Yo quizás las dejaría de esta forma:

Código
  1. $gusta = FALSE;
  2. $userid = "1";
  3. $peliid = "3";
  4. $mddcartel = md5($peliid);
  5.  echo '<div id="'.$mddcartel.'">';
  6.  echo '<a href="#"' onclick="like('.$userid.', '.$peliid.', '.$mddcartel.')">Me gusta</a>';
  7.  echo '</div>';
  8.  

Es decir, concatenar a la cadena que se imprimirá el valor de las variables.

Creo que usando comilla simple (') al escribir comillas dobles no afectaba a la cadena, pero no estoy muy seguro. De todos modos si las comillas dobles afectan al lugar de terminación de la cadena deberías poner delante un \, es decir:

Código
  1. $gusta = FALSE;
  2. $userid = "1";
  3. $peliid = "3";
  4. $mddcartel = md5($peliid);
  5.  echo '<div id=\"'.$mddcartel.'\">';
  6.  echo '<a href=\"#\"' onclick=\"like('.$userid.', '.$peliid.', '.$mddcartel.')\">Me gusta</a>';
  7.  echo '</div>';
  8.  

Saludos.