Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: jbodenser en 14 de Febrero 2016, 19:04
-
Buenas, este es el ejercicio 1 de la entrega CU01133E del curso de JavaScript. Cambiado el codigo para usar if en vez de switch.
function pulsada (tecla) {
var listaNodosPantalla = document.getElementsByClassName('pantalla');
var nodoTextoPantalla = listaNodosPantalla[0].firstChild;
if (tecla == 'C') {
nodoTextoPantalla.nodeValue = ' ';
} else if (tecla == '=') {
var resultado = eval(nodoTextoPantalla.nodeValue);
nodoTextoPantalla.nodeValue = resultado;
} else {
nodoTextoPantalla.nodeValue = nodoTextoPantalla.nodeValue + tecla;
}
Ejercicio 2.
El cual no llego a entender del todo el ejemplo, especialmente la parte de eval(llamada) en la parte final. Por qué está allí? Lo he borrado y me ha dado el mismo resultado.
Aún así he intentado hacerlo yo solo.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Botones con eval</title>
<style>
div {
width: 300px;
height: 450px;
margin: auto;
overflow: hidden;
background: rgba(146, 212, 24, .5);
text-align: center;
}
a {
width: 90%;
height: 350px;
background: rgba(245, 245, 245, .8);
margin: 10px auto;
display: block;
}
button {
display: inline-block;
padding: 15px;
margin: 10px 20px 0 20px;
}
</style>
<script type="text/javascript">
function componer (sentido) {
var texto1 = 'Has pulsado el boton';
var aEvaluar = texto1 + ' ' + sentido;
alert (aEvaluar);
eval (aEvaluar);
}
</script>
</head>
<body>
<div>
<a href="#"></a>
<button type="button" onclick="componer('Atras');">Atrás</button>
<button type="button" onclick="componer('Adelante');">Adelante</button>
</div>
</body>
</html>
-
Hola jbodenser.
El primer ejercicio está bien.
En el segundo no hace lo que pide el enunciado.
dos botones que pongan “Adelante” y “Atrás”, de modo que cuando se pulsen den lugar a que se llame la función componer(sentido). En esta función, a través de la función eval se ejecutará moverImagen('adelante') ó moverImagen('atras') según el parámetro recibido. La función moverImagen(sentido) puede contener un simple mensaje indicando el valor del parámetro <<sentido>> recibido.
Has creado la función componer(), pero no llamas a la función moverImagen() en ningún momento dado que no la has construido. Te dejo un ejemplo para que lo veas mas claro, basado en el código que tu has propuesto.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Botones con eval</title>
<style>
div {
width: 300px;
height: 450px;
margin: auto;
overflow: hidden;
background: rgba(146, 212, 24, .5);
text-align: center;
}
a {
width: 90%;
height: 350px;
background: rgba(245, 245, 245, .8);
margin: 10px auto;
display: block;
}
button {
display: inline-block;
padding: 15px;
margin: 10px 20px 0 20px;
}
</style>
<script type="text/javascript">
function moverImagen(sentido){
alert('Has pulsado el boton ' + sentido);
}
function componer (sentido) {
eval ('moverImagen(\''+ sentido + '\')');
}
</script>
</head>
<body>
<div>
<a href="#"></a>
<button type="button" onclick="componer('Atras');">Atrás</button>
<button type="button" onclick="componer('Adelante');">Adelante</button>
</div>
</body>
</html>
En tu ejemplo, "aEvaluar" contiene una simple cadena de texto, por eso da igual que quites la última linea.
Sin embargo esta linea:
eval ('moverImagen(\''+ sentido + '\')');
Aunque es una cadena de texto también, en este caso eval dará lugar a que se llame a la función moverImgen(sentido).
Espero que te sirva.
Saludos.