Cambiar contenido div con ID variable javascript

Iniciado por javirk, 1 Mayo 2012, 12:18 PM

0 Miembros y 1 Visitante están viendo este tema.

javirk

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 (javascript) [Seleccionar]
<html>
<head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
function like(userid, peliid, mddcartel)
{
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById(mddcartel).innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET", "like.php?uid="+userid+"&pid="+peliid, true);
  xmlhttp.send();
}

</script>
</head>
<body>
<?php
$gusta 
FALSE;
$userid "1";
$peliid "3";
$mddcartel md5($peliid);
  echo 
"<div id='$mddcartel'>";
  echo 
"<a href='#' onclick='like($userid$peliid$mddcartel) '>Me gusta</a>";
  echo 
"</div>";
?>

</body>
</html>

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!

Valkyr

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 (php) [Seleccionar]

$gusta = FALSE;
$userid = "1";
$peliid = "3";
$mddcartel = md5($peliid);
  echo '<div id="'.$mddcartel.'">';
  echo '<a href="#"' onclick="like('.$userid.', '.$peliid.', '.$mddcartel.')">Me gusta</a>';
  echo '</div>';


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 (php) [Seleccionar]

$gusta = FALSE;
$userid = "1";
$peliid = "3";
$mddcartel = md5($peliid);
  echo '<div id=\"'.$mddcartel.'\">';
  echo '<a href=\"#\"' onclick=\"like('.$userid.', '.$peliid.', '.$mddcartel.')\">Me gusta</a>';
  echo '</div>';


Saludos.