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:
<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!
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:
$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:
$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.