entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

recuperar valores con parametros de funcion

hola a todos no entiendo porque me da el siguiente error en la consola del navegador, el error varia segun el elemento afectado
prova.php:24 Uncaught ReferenceError: elemento is not defined
at HTMLLIElement.onmouseover (prova.php:24)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="description" content="">
    <meta name="keywords" content="">

</head>
<body>
    <?php

     $estructura = scandir("../beta");
     print_r($estructura);
     for($x = 0; $x<sizeof($estructura); $x++){
        echo "<li onmouseover='escanear($estructura[$x])'>$estructura[$x]</li></br>";
     }

    ?>

    <script type="text/javascript">
        function escanear(directorio){
            console.log(directorio)
        }
    </script>
</body>
</html>

con esto puedo obtener mi codigo renderizado de la siguiente manera

<li onmouseover="escanear(.)">.</li><br>
<li onmouseover="escanear(..)">..</li><br>
<li onmouseover="escanear(estudio)">estudio</li><br>
<li onmouseover="escanear(pendientes)">pendientes</li><br>
<li onmouseover="escanear(prepros.cfg)">prepros.cfg</li><br>
<li onmouseover="escanear(prova.php)">prova.php</li><br>
<li onmouseover="escanear(random)">random</li><br>
<li onmouseover="escanear(templates)">templates</li><br>
<li onmouseover="escanear(test)">test</li><br>

    <script type="text/javascript">
        function escanear(directorio){
            console.log(directorio)
        }
    </script>

el problema es que mi funcion escanear no me devuelve el valor que esta presente como parametro en la llamada a esta misma funcion, lo que quiero es que cuando pase por cada elemento el valor que lleve dentro mi funcion se imprima en consola, logicamente esto debe de cambiar segun el elemento afectado

2 Respuestas

3votos

carlossevi Puntos63580

El mensaje es muy claro: Uncaught ReferenceError: estudio is not defined. Supongo que se refiere a la línea:

<li onmouseover="escanear(estudio)">estudio</li><br>

Es decir, al código JS escanear(estudio). ¿Qué es estudio en tu código? Lo estás pasando como si fuera un objeto pero JS se queja de que no lo conoce. ¿Quieres decir escanear('estudio')?

0voto

steven comentado

entonces significa que a pesar del error la variable que pase en la llamada a la funcion llega y toma el puesto de mi variable definida en la funcion, pero como dicha variable no existe no lo toma en cuenta

0voto

carlossevi comentado

Significa que no consigue llamar a la función porque falla en la identificación de los parámetros.

0voto

steven comentado

ahora lo puedo entender, en ningun caso la variable elemento definida en mi funcion cambia,es capaz solo de guardar valores, variables y arreglos, yo creia al principio que esta variable elemeto podia ser sustituida por motra variable que paso en la llamada

0voto

carlossevi comentado

Claro que puede ser sustituida por otra variable... ¡pero por otra variable que exista! ¿Lo entiendes? ¡¡Tiene que existir!! En el ejemplo anterior no había ninguna variable estudio.

Un caso que sí funcionaría:

var estudio = 'estudio';
escanear(estudio);

Creo que con esto podemos dar por terminada la conversación, y tu apuntarte a clases de programación y de comprensión lectora.

0voto

steven comentado

no te preocupes lo acabo de entender, muchas gracias

1voto

gerko23 Puntos1930

hola la linea en tu php te quedaria mejor asi:

echo '<li onmouseover="escanear('.'valor = "'.$estructura[$x].' " '.')">'.$estructura[$x].'</li></br>';

luego ya en la lista "escanear(estudio)" "estudio" es una variable la cual debe tener un valor de lo contrario te da error si quiere que sea un texto debes de definirlo como ta el uso de comillas es importante, el JS lee a estudio como variable, si quieres que sea tu salida debes de definirselo como salida

0voto

steven comentado

muchas gracias por la sugerencia, el error lo pude resolver usando la secuencia de escape sin embargo todavia me quedaron algunas dudas lo puedes ver en mi ultimo comentario

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta