-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
69 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"type":"exercise","title":"Reloj","description":"Ejemplo de Reloj con JavaScript\nTrate de conseguir el mismo resultado empleando JQuery.\nPuede importar la librería de un CDN mediante la siguiente etiqueta: <code><script src=\"http://code.jquery.com/jquery-1.11.2.min.js\"></script></code>.","editorMode":"HTML","content":"<!DOCTYPE html>\n<html>\n<head>\n <title>Reloj</title>\n <meta charset=\"UTF-8\">\n <script type=\"text/javascript\">\n function mostrar_fecha(){\n var cl = document.getElementById(\"fecha\");\n cl.innerHTML = new Date();\n }\n </script>\n</head>\n<body>\n <h2>Reloj</h2>\n <div id=\"fecha\"></div>\n <script type=\"text/javascript\">\n mostrar_fecha(); //muestra fecha al cargar\n // actualiza cada segundo\n setInterval(mostrar_fecha, 1000);\n </script>\n</body>\n</html>"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"type":"exercise","title":"JQuery Intro","description":"Empleando JQuery realice los siguiente cambios en la página web:\n-> Añada el título \"JQuery\" a la página web.\n-> Centre la cabecera <code><header></code>.\n-> Cambie a 20px el tamaño de fuente de los <code><p></code> con clase \"title\".\n-> Ponga fondo negro y letra blanca a los <code><div></code> que estén dentro del elemento con id \"news\".\n-> Incluya un manejador de eventos a todos los <code><li></code> cuyo atributo \"alert\" sea igual a \"yes\", de modo que si se pulsa sobre alguno de ellos su contenido se escriba en el <code><footer></code> de la página.\n","editorMode":"HTML","content":"<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"UTF-8\">\n <script src=\"http://code.jquery.com/jquery-1.11.2.min.js\"></script>\n <script type=\"text/javascript\">\n $(document).ready(function(){\n //Escribe tu solución aquí\n \n });\n </script>\n </head>\n <body>\n <header>Aprendiendo a utilizar los selectores de JQuery</header>\n <article>\n <div>\n <p class=\"title\">Características de JQuery</p>\n <ul>\n <li>Rápido</li>\n <li alert=\"yes\">Ligero</li>\n <li>Multi-navegador</li>\n </ul>\n </div>\n </article>\n <article id=\"news\">\n <div class=\"title\">\n <a target=\"_blank\" href=\"http://jquery.com/\">JQuery website</a>\n </div>\n </article>\n <footer></footer>\n </body>\n</html>","score_function":"var score = function (document){\n\t\tvar grade = {};\n\t\tgrade.successes = [];\n\t\tgrade.errors = [];\n\t\tgrade.feedback = [];\n\t\tgrade.score = 0;\n\n\t\t// Añada el título \"JQuery\" a la página web.\n\t\tvar title = $(document).find(\"head\").find(\"title\").html();\n\t\tif((typeof title === \"string\")&&(title.trim().toLowerCase()===\"jquery\")){\n\t\t\tgrade.successes.push(\"Cambiaste el título de la página web correctamente.\");\n\t\t\tgrade.score += 2;\n\t\t} else {\n\t\t\tgrade.errors.push(\"No cambiaste correctamente el título de la página web.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\t\t//Centre la cabecera <header>.\n\t\tvar header = $(document).find(\"header\");\n\t\tif($(header).css(\"text-align\")===\"center\"){\n\t\t\tgrade.successes.push(\"Centraste el <header> correctamente.\");\n\t\t\tgrade.score += 1;\n\t\t} else {\n\t\t\tgrade.errors.push(\"El <header> no está centrado.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\t\t//Cambie a 20px el tamaño de fuente de los <p> con clase \"title\".\n\t\tvar ps = $(document).find(\"p.title\");\n\t\tif($(ps).css(\"font-size\")===\"20px\"){\n\t\t\tgrade.successes.push(\"Cambiaste el tamaño de los <p> con clase title correctamente.\");\n\t\t\tgrade.score += 1;\n\t\t} else {\n\t\t\tgrade.errors.push(\"Los elementos p con clase title no tienen el tamaño de fuente correcto.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\n\t\t//Ponga fondo negro y letra blanca a los <div> que estén dentro del elemento con id \"news\".\n\t\tvar divs = $(document).find(\"#news div\");\n\t\tvar _background = false;\n\t\tvar _color = false;\n\n\t\tif($(divs).css(\"background-color\")===\"rgb(0, 0, 0)\"){\n\t\t\t_background = true;\n\t\t} else {\n\t\t\t_background = false;\n\t\t}\n\n\t\tif($(divs).css(\"color\")===\"rgb(255, 255, 255)\"){\n\t\t\t_color = true;\n\t\t} else {\n\t\t\t_color = false;\n\t\t}\n\n\t\tif(_background&&_color){\n\t\t\tgrade.successes.push(\"Los <div> dentro del elemento con id news tienen el estilo adecuado.\");\n\t\t\tgrade.score += 2;\n\t\t} else {\n\t\t\tif(!_background){\n\t\t\t\tgrade.errors.push(\"Los <div> dentro del elemento con id news no tienen el fondo adecuado.\");\n\t\t\t}\n\t\t\tif(!_color){\n\t\t\t\tgrade.errors.push(\"Los <div> dentro del elemento con id news no tienen el color adecuado.\");\n\t\t\t}\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\n\t\t// Incluya un manejador de eventos a todos los <li> cuyo atributo \"alert\" sea igual a \"yes\", de modo que si se pulsa sobre alguno de ellos su contenido se escriba en el <footer> de la página.\n\t\tvar triggerElement = $(document).find(\"[alert='yes']\")[0];\n\t\tif(typeof triggerElement == \"undefined\"){\n\t\t\tgrade.errors.push(\"No se encontró ningún elemento escuchando al evento.\");\n\t\t\treturn grade;\n\t\t}\n\n\t\tvar footer = $(document).find(\"footer\");\n\t\tvar oldFooterVal = $(footer).html();\n\t\tvar triggerElementVal = $(triggerElement).html();\n\n\t\t$(footer).html(\"\");\n\t\t$(triggerElement).trigger(\"click\");\n\t\tif($(footer).html()===triggerElementVal){\n\t\t\t//Success\n\t\t\tgrade.score += 4;\n\t\t\tgrade.successes.push(\"El manejador de eventos funciona acorde a lo esperado.\");\n\t\t} else {\n\t\t\t//Fail\n\t\t\tgrade.errors.push(\"El manejador de eventos no funciona acorde a lo esperado.\");\n\t\t}\n\n\t\t$(footer).html(oldFooterVal);\n\n\t\t//Passed threshold: 8\n\t\tif(grade.score < 8){\n\t\t\tgrade.score = 4;\n\t\t}\n\n\t\tif(grade.score===10){\n\t\t\tgrade.feedback.push(\"¡Enhorabuena, tu solución es perfecta!\");\n\t\t}\n\n\t\treturn grade;\n\t}"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> | ||
<script type="text/javascript"> | ||
$(document).ready(function(){ | ||
//Escribe tu solución aquí | ||
$("head").append("<title>JQuery</title>"); | ||
$("header").css("text-align","center"); | ||
$("p.title").css("font-size","20px"); | ||
$("#news div").css("background","black"); | ||
$("#news div").css("color","white"); | ||
$("li[alert='yes']").click(function(e){ | ||
$("footer").html($(this).html()); | ||
}); | ||
}); | ||
</script> | ||
</head> | ||
<body> | ||
<header>Aprendiendo a utilizar los selectores de JQuery</header> | ||
<article> | ||
<div> | ||
<p class="title">Características de JQuery</p> | ||
<ul> | ||
<li>Rápido</li> | ||
<li alert="yes">Ligero</li> | ||
<li>Multi-navegador</li> | ||
</ul> | ||
</div> | ||
</article> | ||
<article id="news"> | ||
<div class="title"> | ||
<a target="_blank" href="http://jquery.com/">JQuery website</a> | ||
</div> | ||
</article> | ||
<footer></footer> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"type":"exercise","title":"Área de una elipse","description":"Devuelva en la variable <b>'elipse'</b> una función que calcule el área de una elipse de acuerdo a la fórmula <code>Área = Π·a·b</code>, siendo a y b el radio de los semiejes de la elipse. La función podrá ser invocada de dos formas diferentes:\n a) mediante dos parámetros numéricos '<b>a</b>' y '<b>b</b>'.\n b) mediante un solo parámetro de tipo array que contenga los valores de a y b.\n-> Si la función recibe como parámetro un objeto que no sea un array devolverá <b>-1</b>.\n-> Si la función recibe como parámetro un array que no contenga los valores adecuados devolverá <b>-2</b>.\n-> En cualquier otro caso en que la función reciba parámetros erroneos deberá devolver el valor <b>-3</b>.\n-> Si los parámetros son correctos, la función devolverá el valor del área de la elipse.\n","editorMode":"JavaScript","content":"/*\n * Devuelva en la variable 'elipse' una función que calcule el área de una elipse de acuerdo a la fórmula 'Área = Π·a·b'\n */\n\nvar elipse = function(a,b){\n\n};\n","score_function":"var score = function (result,variablesHash){\n\t\tvar grade = {};\n\t\tgrade.successes = [];\n\t\tgrade.errors = [];\n\t\tgrade.feedback = [];\n\t\tgrade.score = 0;\n\n\t\tvar elipse = variablesHash[\"elipse\"];\n\n\t\tif(typeof elipse !== \"function\"){\n\t\t\tgrade.errors.push(\"El valor devuelto en la variable 'elipse' no es una función.\");\n\t\t\treturn grade;\n\t\t}\n\t\tgrade.score += 1;\n\n\t\t//Testear la función.\n\n\t\tvar _feedbackPI = false;\n\n\t\t//Case: a,b numbers\n\t\ttry {\n\t\t\tvar testA = elipse(0,0);\n\t\t\tvar testB = elipse(1,1);\n\t\t\tvar testC = elipse(2,5);\n\t\t\tif((testA===0)&&(testB===Math.PI)&&(testC===10*Math.PI)){\n\t\t\t\tgrade.score += 2;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando 'a' y 'b' son números.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no calcula correctamente el valor esperado cuando 'a' y 'b' son números.\");\n\t\t\t\tif(Math.abs(testB-Math.PI) < 0.1){\n\t\t\t\t\tgrade.score += 1;\n\t\t\t\t\tgrade.feedback.push(\"Algunos valores calculados se acercan bastante al esperado sin llegar a ser exactos. Recuerda que el valor de PI puede ser obtenido empleando el módulo Math de JavaScript de la siguiente forma \\\"Math.PI\\\".\");\n\t\t\t\t\t_feedbackPI = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e1){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando 'a' y 'b' son números.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\t\t//Case: a, array\n\t\ttry {\n\t\t\tvar testD = elipse([0,0]);\n\t\t\tvar testE = elipse([1,1]);\n\t\t\tvar testF = elipse([2,5]);\n\t\t\tif((testD===0)&&(testE===Math.PI)&&(testF===10*Math.PI)){\n\t\t\t\tgrade.score += 2;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando 'a' es un array.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no calcula correctamente el valor esperado cuando 'a' es un array.\");\n\t\t\t\tif(Math.abs(testE-Math.PI) < 0.1){\n\t\t\t\t\tgrade.score += 1;\n\t\t\t\t\tif(!_feedbackPI){\n\t\t\t\t\t\tgrade.feedback.push(\"Algunos valores calculados se acercan bastante al esperado sin llegar a ser exactos. Recuerda que el valor de PI puede ser obtenido empleando el módulo Math de JavaScript de la siguiente forma \\\"Math.PI\\\".\");\n\t\t\t\t\t\t_feedbackPI= true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e2){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando 'a' es un array.\");\n\t\t}\n\n\t\tif(grade.errors.length > 0){\n\t\t\treturn grade;\n\t\t}\n\n\n\t\t//Si la función recibe como parámetro un objeto que no sea un array devolverá -1.\n\t\ttry {\n\t\t\tif((elipse({})===-1)&&(elipse(new Date())===-1)){\n\t\t\t\tgrade.score += 2;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando 'a' es un objeto diferente de un array.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no funciona correctamente cuando 'a' es un objeto diferente de un array.\");\n\t\t\t}\n\t\t} catch (e2){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando 'a' es un objeto diferente de un array.\");\n\t\t}\n\n\t\t//Si la función recibe como parámetro un array que no contenga los valores adecuados devolverá -2.\n\t\ttry {\n\t\t\tif((elipse([])===-2)&&(elipse([5,\"test\"])===-2)&&(elipse([undefined,5])===-2)){\n\t\t\t\tgrade.score += 1;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando 'a' es un array inválido.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no funciona correctamente cuando 'a' es un array inválido.\");\n\t\t\t}\n\n\t\t\tif(elipse([-1,-1])===-2){\n\t\t\t\tgrade.score += 1;\n\t\t\t} else {\n\t\t\t\tgrade.feedback.push(\"Un array que contenga números negativos también se considera un array inválido.\");\n\t\t\t}\n\n\t\t} catch (e2){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando 'a' es un array inválido.\");\n\t\t}\n\n\t\t// En cualquier otro caso en que la función reciba parámetros erroneos deberá devolver el valor -3.\n\t\ttry {\n\t\t\tif((elipse()===-3)&&(elipse(5)===-3)&&(elipse(5,null)===-3)&&(elipse(undefined,5)===-3)&&(elipse(\"perro\",10)===-3)){\n\t\t\t\tgrade.score += 1;\n\t\t\t\tgrade.successes.push(\"La función 'elipse' funciona correctamente cuando recibe parámetros inválidos.\");\n\t\t\t} else {\n\t\t\t\tgrade.errors.push(\"La función 'elipse' no funciona correctamente cuando recibe parámetros inválidos.\");\n\t\t\t}\n\n\t\t\tif(elipse(-1,-1)===-3){\n\t\t\t\tgrade.score += 1;\n\t\t\t} else {\n\t\t\t\tgrade.feedback.push(\"Los valores a y b deberían ser siempre positivos. De lo contrario se deberían considerarse parámetros inválidos.\");\n\t\t\t}\n\n\t\t} catch (e2){\n\t\t\tgrade.errors.push(\"La función 'elipse' presenta errores de ejecución cuando recibe parámetros inválidos.\");\n\t\t}\n\n\t\t//Scale grade\n\t\tgrade.score = Math.min(10,Math.max(0,grade.score));\n\n\t\t//Passed threshold: 8\n\t\tif(grade.score < 8){\n\t\t\tgrade.score = 4;\n\t\t}\n\n\t\tif(grade.score===10){\n\t\t\tgrade.feedback.push(\"¡Enhorabuena, tu solución es perfecta!\");\n\t\t}\n\n\t\treturn grade;\n\t}","score_function_vars":["elipse"]} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/* | ||
* Devuelva en la variable 'elipse' una función que calcule el área de una elipse de acuerdo a la fórmula 'Área = Π·a·b' | ||
*/ | ||
|
||
var elipse = function(a,b){ | ||
if(typeof a == "object"){ | ||
if(a instanceof Array){ | ||
if((typeof a[0] == "number")||(typeof a[1] == "number")){ | ||
if((a[0]>=0)&&(a[1]>=0)){ | ||
return a[0]*a[1]*Math.PI; | ||
} | ||
} | ||
return -2; | ||
} else { | ||
return -1; | ||
} | ||
} else { | ||
if((typeof a == "number")&&(typeof b == "number")){ | ||
if((a>=0)&&(b>=0)){ | ||
return a*b*Math.PI; | ||
} | ||
} | ||
return -3; | ||
} | ||
}; |
1 change: 1 addition & 0 deletions
1
examples/JS Test Tipos y Valores/Introducción_a_JavaScript-_Tipos_y_valores.json
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.