Hola. Dejo la solucion al ejercicio EJERCICIO CU01146E del tutorial de programador web con JavaScript partiendo de cero.
EJERCICIO CU01146E
a) Reemplaza toda la notación basada en sintaxis tipo array para el acceso a propiedades por sintaxis basada en notación de punto. Ejecuta el código y comprueba su funcionamiento.
Después de un cierto tiempo dándole vueltas he mirado en el foro las soluciones para este apartado y por lo visto como dice en el temario no se puede acceder a la propiedad
con la sintaxis operaciones.operacion.
El que mas se acerca a una posible solución es Dimitar Stefanov
https://www.aprenderaprogramar.com/foros/index.php?topic=3952.msg16724#msg16724Puede acceder a la propiedad cambiando el signo + por mas, pero la función deja de
trabajar como tal aunque se ejecute el codigo y haga lo que le pedimos ya que una función sirve para se ejecute el codigo una vez introducidos los valores que pide la función ya sean mediante variables, teclado, ficheros, etc. sin tener que modificar el codigo.
En este caso se tendria que cambiar el codigo de la operacion por otra ya que no puede interaccionar dinámicamente y cada vez que necesitemos cambiar de operación hay que cambiar el código dentro la función.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
/* *********************************************************************
************************** EJERCICIO **********************************
******************************************************************* */
msg="";
function mas(x, y){
return x + y;
}
function menos(x, y){
return x - y;
}
function multiplica(x, y){
return x * y;
}
function divide(x, y){
return x / y;
}
//(b
function operaciones (x, y){
this.suma=mas(x,y);
this.resta=menos(x,y);
//(c
this.multi=multiplica(x,y);
this.divi= divide(x,y);
}
function calcular(x,y){
var objOperaciones = new operaciones(x, y);//(d
for(nombrePropiedad in objOperaciones){
msg=msg+x + ' ' + nombrePropiedad + ' ' + y + ' = ' + objOperaciones[nombrePropiedad]+"<br/>";
}
document.all.pizarra.innerHTML=msg;
}
function operacionMatematica(){
var x = prompt('Introduce primer número: ');
var y = prompt('Introduce segundo número: ');
calcular(Number(x), Number(y));
}
/* ****************************************************************
************************** FIN DEL EJERCICIO**********************
*************************************************************** */
</script>
<style type="text/css">
body{background-color:green;}
h1,h2{
text-align:center;
margin-left:0;
padding:0;
color:white;
width:300;
height:200;
}
.boton {
border:outset white 2px;
width:200px;
border-radius:25px 25px;
box-shadow:3px 3px 2px 2px #AFF6AF;
text-align:center;
background-color:#90EE90;
color:black;
font-size:19px;
margin-top :2px;
margin-left:5px;
margin-bottom:5px;
}
.boton, #externa{margin-left:150px;}
.boton:hover {
border:inset 2px green;
box-shadow:3px 3px 2px 2px #0BF50B ;
}
#pizarra {
background-color:black;
border:groove red 8px;
border-radius:25px 25px;
color:white;
font-size:19px;
padding:15px;
overflow:hidden;
float:left;
margin-left:10px;
margin-top:10px;
}
#Pizarras{float:left;}
</style>
</head>
<body onload="iniciaVariables()">
<div id="cabecera"><h2>Ejercicio CU01146E javaScript desde cero</h2> </div>
<div id="Pizarras">
<div class="boton" onclick="operacionMatematica()">Operaciones</div>
<div id="pizarra"></div>
</div>
</body></html>