2012-01-08 667 views
6

hola im estoy recibiendo JS error:SyntaxError no detectada: identificador inesperado

Uncaught SyntaxError: Unexpected identifier 

aquí

<script type="text/javascript"> 
var cur_level = 1; 
var ids_arr = new Array(<?php echo $max_level?>); 
var im_here = new Array(<?php echo $max_level?>); 
ids_arr[0] = 1; 
im_here[0] = "|"; 
function displayData(id, level, used, title) 
{ 
if(used){ 
    choice = document.getElementById('divv'+id).innerHTML; 
    document.getElementById('test_div').innerHTML = choice; 

} else { 
    document.getElementById('test_div').innerHTML = ' No lerning paths to show.'; 
    updateLinksDiv(id, level, title); 

    } 
} 

function updateLinksDiv(id, level, title) 
{ 
var links_div_info = document.getElementById('links_parent_'+id); 
var tmpHTML = ''; 
var here = ''; 

for(i=0;i<level;i++){ 
    here+= '->'+im_here[i]; 
    links_div_info = document.getElementById('links_parent_'+ids_arr[i]); 
    tmpHTML += '<div id="divl_'+links_div_info.id+'">'+links_div_info.innerHTML+'</div>'; 
} 
links_div_info = document.getElementById('links_parent_'+id); 
tmpHTML += '<div id="divl_'+links_div_info.id+'">'+links_div_info.innerHTML+'</div>'; 

document.getElementById('links').innerHTML = tmpHTML; 
ids_arr[i] = id; 
im_here[i] = title; 
} 

</script> 


<script type="text/javascript"> 
    window.onload=updateLinksDiv(1 , 0 , "|") ; 
</script> 

las funciones se supone que debe crear una "ampliar" que se abre con los niveles y todo estaba funcionando bien hasta que agregue el "título" y comencé a recibir el error. el error me apunta al último y yo simplemente no puede encontrar el error ... trato de llamar displayData como esto

onclick="displayData('.$cat->id.','.$cat->level.',0,'.$cat->title.')" 

alguna sugerencia de lo que no estoy viendo.?

gracias

+4

Tiene un error de JavaScript, muéstrenos el JavaScript y no PHP que genere JavaScript. – Quentin

+0

También díganos qué línea desencadena el error. – Quentin

+0

Como nota al margen, no debe usar los atributos 'onxxx'. En su lugar, vincula los eventos a los elementos después de que la página se haya cargado; esto se denomina [JavaScript discreto] (http://en.wikipedia.org/wiki/Unobtrusive_JavaScript). De manera similar, el uso de 'innerHtml' es una receta para [vulnerabilidades de inyección XSS] (http://en.wikipedia.org/wiki/Cross-site_scripting). Recomiendo usar jQuery o una biblioteca similar. – phihag

Respuesta

8

En su comentario se dice que se genera displayData(26,1,0,כיתה ג). Esto explica los síntomas, ya que aquí el último parámetro contiene un espacio además de las letras hebreas, por lo que el intérprete de JavaScript lo ve como dos identificadores separados por un espacio, y los identificadores probablemente no estén definidos. Google Chrome muestra el mensaje de error que describes, mientras que Firefox e IE dicen, más enigmáticamente, "faltante" después de la lista de argumentos. "

Aparentemente el código generado se supone que tiene el último parámetro entre comillas, es decir 'כיתה ג' . Necesita modificar la generación para contenerlos.

+0

muchas gracias –

+2

Compruebe la consola en un navegador diferente, ¡Brillante! – DigitalDesignDj

Cuestiones relacionadas