Autor Tema: Función eval JavaScript implementar calculadora getElementsByClassname CU01133E#  (Leído 5131 veces)

Cabanota

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Hola compañeros. Aquí traigo resuelto el punto 2 del ejercicio de este tema CU01133E del tutorial JavaScript de aprenderaprogramar.

Citar
2) Utilizando el ejemplo de código que usa la función eval en la función <<function componer(sentido)>> que hemos visto dentro del código de los ejemplos,

 function componer(sentido) {
var accion = 'mover';
var sobreElemento = 'Imagen';
var haciaDonde = sentido;
var llamada = accion + sobreElemento+'(\''+haciaDonde+'\')';
alert ('La unión del texto genera ' + llamada);
var tmpFunc = new Function(llamada);
tmpFunc();
}

crea una página web donde existan 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.


Espero que lo haya entendido bien y que así sea lo que se esta pidiendo, en caso contrario me gustaría entonces que me explicaran bien. De ante mano, muchas gracias.


Código respuesta ejercicio:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
<style type="text/css">
#caja{
text-align: center;
font-size: 30px;
border: 1px solid black;
width: 200px;
height: 30px;
padding-bottom: 8px;
}
</style>
<script type="text/javascript">
var lado;
function componer(sentido) {
var accion = 'mover';
var sobreElemento = 'Imagen';
var haciaDonde = sentido;
var llamada = accion + sobreElemento+'(\''+haciaDonde+'\')';
// alert ('La unión del texto genera ' + llamada);
eval(llamada);
}

function moverImagen(sentido) {
lado = document.getElementById("caja");
var haciaDonde = lado.childNodes[0];

if (sentido == "adelante") {
haciaDonde.nodeValue = sentido;

} else if (sentido == "atras") {
haciaDonde.nodeValue = sentido;
};
}
</script>
</head>
<body>
<div id="caja"> </div>
<input id="botonAdelante" type="button" value="Adelante" onclick="componer('adelante')" />
<input id="botonAtras" type="button" value="Atras" onclick="componer('atras')" />
</body>
</html>
« Última modificación: 26 de Enero 2018, 19:51 por Ogramar »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola Cabanota, ejercicio perfectamente resuelto, eso era lo que pedía. Te falta el apartado 1), recomendamos completar todos los ejercicios con el fin de poder detectar vicios y corregirlos.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Cabanota

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Buenas tardes,, gracias.. yo lo hice, pero lo modifique a mi gusto porque no tenia la intención de subirlo, plasme de manera independiente el html, css y javascript. Aparte de eso que cambie la funcion: getElementByClassName por la funcion: getElementById, con intención de probar de diferentes manera con el mismo resultado, pero lo que pedia el ejercicio como tal, lo de cambiar el swicth por condiciones if y else si lo hice tal cual como lo pedía el ejercicio. Vuelvo y repito, modifique a mi gusto porque no tenia la intención de subirlo.

Citar
1) Modifica el código del ejemplo de la calculadora javascript para que en lugar del condicional switch
uses el condicional if (con if else ó if else if cuando sea necesario).
--------------------------------------------------------------------
HTML
Código: [Seleccionar]
<!DOCTYPE html>
<html style="border:none">
<head>
<title></title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="calculadora.css">
<script type="text/javascript" src="calculadora.js"></script>
</head>
<body style="border:none">
<header> <!-- Cabezera -->
<h2>Cursos aprenderaprogramar.com</h2>
<h3>Ejemplo calculadora JavaScript</h3>
</header>

<div id="calculadora"> <!-- contenedor -->
<!-- pantalla y la tecla limpiar -->
<div class="parteSuperior">
<span class="limpiar" onclick="pulsada('C')">C</span>
<div id="pantallota" class="pantalla"> </div> <!-- Se deja un espacio dentro de la etiqueta para poder agarrarlo con el nodeValue -->
</div>
<div class="teclas">
<!-- Operadores y otras letras -->
<span onclick="pulsada('7')">7</span>
<span onclick="pulsada('8')">8</span>
<span onclick="pulsada('9')">9</span>
<span onclick="pulsada('+')" class="operador">+</span>
<span onclick="pulsada('4')">4</span>
<span onclick="pulsada('5')">5</span>
<span onclick="pulsada('6')">6</span>
<span onclick="pulsada('-')" class="operador">-</span>
<span onclick="pulsada('1')">1</span>
<span onclick="pulsada('2')">2</span>
<span onclick="pulsada('3')">3</span>
<span onclick="pulsada('/')" class="operador">÷</span>
<span onclick="pulsada('0')">0</span>
<span onclick="pulsada('.')">.</span>
<span onclick="pulsada('=')" class="igual">=</span>
<span onclick="pulsada('*')" class="operador">x</span>
<span id="probandoAndo" onclick="miPrueba()">probar</span>
</div>
</div>
</body>
</html>
-------------------------------------------------------------------------
CSS
Código: [Seleccionar]
body{
font-family: sans-serif;
text-align: center;
}
#calculadora{
font: bold 14px Arial, sans-serif;
background-color: #9DD2EA;
margin: 0 auto;
padding: 20px 20px 9px;
width: 285px;
  border-radius: 3px;
  /*height: auto;*/
}
.parteSuperior, .teclas{
overflow: hidden;
}
div.parteSuperior div.pantalla{
background-color: rgba(0, 0, 0, 0.2);
color: #FFF;
float: right;
width: 180px;
height: 40px;
font-size: 17px;
border-radius: 3px;
padding: 0 10px;
text-align: right;
letter-spacing: 1px;/*espaciado entre caractere*/
line-height: 40px;
}
.parteSuperior span.limpiar, .teclas span{
background-color: #FFFFFF;
color: #888888;
cursor: pointer;
float: left;
border-radius: 3px;
height: 36px;
width: 66px;
margin: 0 7px 11px 0;
line-height: 36px;
text-align: center;
transition: all 1s ease 0s;
}
.parteSuperior span.limpiar{
background-color: #FF7C87;
}
.teclas span.operador{
margin-right: 0;
background-color: #FFDAB9;
}
.teclas span.igual{
background-color: #F1FF92;
color:  #888E5F;
}
.parteSuperior span.limpiar:hover, .teclas span:hover{
background-color: #9C89F6;
color: #FFFFFF;

header{
-webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
width: 325px;
margin: 0 auto;
border-radius: 3px;
}
header h2, header h3{
margin: 0;
padding: 5px;
}
header h3{
background-color: #E59DEA;

}
header h2{
background-color: #FFBBF6;
}
.teclas span#probandoAndo{
width: 100%;
}
---------------------------------------------------------------------------
javascript
Código: [Seleccionar]
var listaNodoPantalla;
function pulsada(tecla) {
listaNodoPantalla = document.getElementsByClassName("pantalla");
var nodoTextoPantalla = listaNodoPantalla[0].childNodes[0];//Segunda opcion: listaNodoPantalla[0].firstChild
switch(tecla){
case "C":
nodoTextoPantalla.nodeValue = "";
break;

case "=":
var resultado = eval(nodoTextoPantalla.nodeValue);
nodoTextoPantalla.nodeValue = resultado;
break;

default:
nodoTextoPantalla.nodeValue = nodoTextoPantalla.nodeValue + tecla;
}
}

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola lo que te comentaba es la recomendación que hacemos para asegurar el avance. Comentabas que habías cambiado el swith por if, pero yo lo que veo en el código que has pegado es el switch  :-[

Saludos
Responsable de departamento de producción aprenderaprogramar.com

Cabanota

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
JAJAJAJA.. QUE PENAAAA..
AQUI DE NUEVO:
Código: [Seleccionar]
var nodoClass = "";
function pulsada (tecla) {
nodoClass = document.getElementById("pantallota");
var prueba = nodoClass.childNodes[0];
if(tecla == "C"){
prueba.nodeValue = ""; //esta es una manera.

}else if(tecla == "="){
var resultado = eval(prueba.nodeValue);
pantallota.innerHTML = resultado; //esta es otra manera.

}else{
prueba.nodeValue = prueba.nodeValue + tecla;
}

}

// function miPrueba () {
// var probador = nodoClass[0].childNodes[0];
// alert(probador.length);
// }

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
OK!!!  ;D
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".