Professional Documents
Culture Documents
I. OBJETIVOS
Que el estudiante:
1. Adquiera dominio en la construcción de funciones con JavaScript
2. Haga uso de parámetros o argumentos en las funciones que realiza.
3. Utilicen los valores devueltos por las funciones desde cualquier punto de los scripts
4. Creen funciones utilizando declaración de funciones como objetos y literales de funciones
5. Comience a conocer el manejo de eventos usando funciones como controladores de eventos asociados
a elementos del documento web.
Las funciones pueden recibir argumentos o parámetros, que pueden considerarse como variables locales cuyo
valor se determina en el momento de la llamada a la función. Estos argumentos se utilizan en el cuerpo de la
función para calcular un valor que luego es devuelto por la función al punto del script desde donde se invocó.
Las funciones se suelen colocar al inicio del script y se definen con la palabra reservada function. Esta palabra
indica al intérprete que lo que viene es una función.
Ejemplo:
function espar(numero){
var resp;
numero % 2 == 0 ? resp = true : resp = false;
return resp;
1 / 32
Guía # 4: Funciones en JavaScript
Note que la llamada se realiza en la condición de la sentencia if. Observe que en la condición de paro del ciclo
while se está llamando a una función proporcionada por JavaScript, la función isNaN(), que devuelve un valor
lógico que indica si el valor proporcionado como argumento no es un número.
Con respecto a los argumentos de una función, cabe mencionar que como JavaScript es un lenguaje con tipología
débil de datos no se requiere que los argumentos o parámetros se definan como de un tipo específico.
Otra consideración importante es el hecho que si una función tiene más argumentos de los que se utilizan al
momento de invocarla, aquellos argumentos que no son utilizados adquieren automáticamente el valor
undefined. Por tal razón, debe tener cuidado de no realizar ninguna operación o cálculo haciendo un uso
incorrecto de este valor especial. La recomendación es verificar el valor de todos los argumentos si se pudiera
dar esta posibilidad.
Para realizar una función que devuelva un valor debe utilizar una sentencia return dentro del código de la
función. Casi siempre se incluirá al final, como última instrucción, aunque si utiliza sentencias condicionales o
sentencias selectivas, como un switch, es muy probable que tenga que incluir más de una sentencia return.
La siguiente función ilustra cómo se puede crear una función que devuelve valor. Observe que hay dos
sentencias return, debido al hecho de que se está dependiendo de una sentencia condicional para determinar
qué devolver, y al hecho de que se trata de una función recursiva:
//Función que calcula el factorial de un número
function factorial(x){
if (x <= 1)
return 1;
return x * factoria(x-1);
}
Donde,
new, es una palabra clave utilizada para crear un nuevo objeto.
Function(), es el constructor que permite crear objetos de tipo función.
Para realizar la llamada a una función declarada de esta forma, debe tener en cuenta que deberá utilizar el
nombre de la variable de instancia (nombre_funcion) a la función para poder hacer una llamada a la función
desde cualquier punto del script.
Para llamar a los métodos anteriores debería realizar instrucciones como las siguientes:
saludar.hola();
saludar.adios();
saludar.consejo("Al que madruga, Dios le ayuda");
onblur El elemento pierde el enfoque de la entrada.
onclick Indica que se ha hecho clic con el ratón en un elemento.
La selección de un elemento SELECT u otro elemento de formulario ha perdido el
onchange
enfoque y su valor ha cambiado desde que obtuvo el enfoque.
Indica que el elemento ha recibido el foco; concretamente que se ha
onfocus
seleccionado para operar con él o para ingresar datos.
Indica el evento de que una ventana o conjunto de marcos se han terminado de
onload
cargar.
onkeyrpress Se ha producido una pulsación de tecla en algún elemento del documento.
onmouseover Indica que el ratón se ha posicionado sobre el elemento.
onmouseout Indica que el ratón se ha posicionado fuera del elemento.
Indica que el formulario va a ser enviado como producto de un clic sobre un
onsubmit
botón de envío.
Indica que el formulario ha sido restablecido a sus valores iniciales como
onreset
producto de la pulsación sobre un botón reset.
IV. PROCEDIMIENTO
Ejemplo 1: Formulario de prueba que muestra cómo se maneja el control de eventos con el modelo del DOM
Nivel 2, sin usar atributos HTML como manejadores de eventos, si no haciéndolo directamente en el script.
Guión 1: eventos.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Eventos con JavaScript</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="css/eventos.css" />
<script type="text/javascript" src="js/eventos.js"></script>
</head>
<body>
<header>
<h1>Uso de controles de formulario</h1>
</header>
<section>
<article>
<form action="javascript:void(0);" name="frmEjemplo">
<fieldset>
<legend>Uso de controles de formulario</legend>
<ul id="frmfechas">
<li>
<label for="txtfoco" class="fieldLabel">Haga clic en la caja de
texto:</label>
Guión 2: eventos.js
//Iniciar los manejadores de eventos al cargar la página
window.onload = iniciar;
function iniciar(){
//Definir objetos sobre los que se escucharán eventos
//y asociar los eventos correspondientes
//Primera caja de texto
var textFieldFocus = document.frmEjemplo.txtfoco;
textFieldFocus.onfocus = foco;
//Segunda caja de texto
var textFieldKey = document.frmEjemplo.txttecla;
textFieldKey.onkeypress = tecla;
//Campo select
var selectField = document.frmEjemplo.selopciones;
selectField.onchange = function(){
cambioOpcion(this.options[this.selectedIndex].value);
};
//Primer campo checkbox
var chkbox1 = document.getElementById("chkbox1");
chkbox1.addEventListener("click", function(){
activarCasilla(chkbox1, chkbox1.value);
}, false);
//Segundo campo checkbox
var chkbox2 = document.getElementById("chkbox2");
chkbox2.addEventListener("click", function(){
activarCasilla(chkbox2, chkbox2.value);
}, false);
//Tercer campo checkbox
var chkbox3 = document.getElementById("chkbox3");
chkbox3.addEventListener("click", function(){
activarCasilla(chkbox3, chkbox3.value);
}, false);
function foco(){
alert("Foco en la primera Caja");
}
function tecla(){
alert("Pulsaste una tecla");
this.focus();
}
function cambioOpcion(nuevaOpcion){
alert("Has cambiado a la opción " + nuevaOpcion);
}
function pulsa(){
return "Materia: Lenguajes Interpretados en el Cliente";
}
Guión 3: eventos.css
h1 {
background-color:YellowGreen;
border:outset 6px Indigo;
color:Indigo;
font-family:"Bodoni MT Black",Modern;
font-style:normal;
font-weight:Bold;
font-size:1.8em;
ul#frmfechas {
list-style: none;
}
ul#frmfechas li {
display: inline-block;
float: left;
vertical-align: top;
width: auto;
}
ul#frmfechas li.buttons {
clear: both;
}
fieldset {
background-color:YellowGreen;
border:solid 1px Green;
color:DarkGreen;
font:800 0.8em "Helvetica Neue";
margin:12px auto;
padding:3px;
width:35%;
}
legend {
background-color:Plum;
color:Indigo;
font-weight:bold;
font-variant:small-caps;
margin-bottom:8px;
padding:2px 5px;
}
label {
display:block;
float:left;
font-weight:800;
line-height:normal;
margin-right:10px;
position:relative;
text-align:right;
}
input[type="text"] {
display: block;
float: right;
right: 0;
}
input.formInputText {
background-color:Plum;
border:solid 1px Indigo;
color:DarkGreen;
font-size:0.8em;
height:15px;
padding:2px;
margin-right:5px;
margin-bottom:5px;
}
input.formInputText:hover {
background-color:rgb(160,225,60);
border:groove 2px OrangeRed;
color:BlueViolet;
}
input.formInputText:focus {
background-color:PaleGoldenrod;
border:solid 2px Indigo;
color:DarkGreen;
}
#labelcheckboxes, #checkboxes {
display: inline-block;
vertical-align: top;
}
input.formInputCheck {
background-color:Plum;
border:solid 1px Indigo;
height:15px;
}
select {
display: block;
float: right;
right: 0;
}
select.seloptions {
background-color:Plum;
font-size:0.8em;
color:DarkGreen;
cursor:pointer;
padding:2px;
border:solid 1px Indigo;
margin-right:5px;
margin-bottom:5px;
}
select.seloptions:hover {
background-color:rgb(160,225,60);
border:groove 2px OrangeRed;
color:BlueViolet;
}
select.seloptions:focus {
color:DarkGreen;
background-color:PaleGoldenrod;
border:solid 2px Indigo;
}
input.formInputButton {
background: rgba(33,24,102,1);
background: -moz-linear-gradient(left, rgba(33,24,102,1) 0%, rgba(59,36,171,0.97) 51%,
rgba(23,18,168,0.95) 100%);
background: -webkit-gradient(left top, right top, color-stop(0%, rgba(33,24,102,1)),
color-stop(51%, rgba(59,36,171,0.97)), color-stop(100%, rgba(23,18,168,0.95)));
input.formInputButton:hover {
background: rgba(240,131,48,1);
background: -moz-linear-gradient(left, rgba(240,131,48,1) 0%, rgba(255,153,0,1) 100%);
background: -webkit-gradient(left top, right top, color-stop(0%, rgba(240,131,48,1)),
color-stop(100%, rgba(255,153,0,1)));
background: -webkit-linear-gradient(left, rgba(240,131,48,1) 0%, rgba(255,153,0,1)
100%);
background: -o-linear-gradient(left, rgba(240,131,48,1) 0%, rgba(255,153,0,1) 100%);
background: -ms-linear-gradient(left, rgba(240,131,48,1) 0%, rgba(255,153,0,1) 100%);
background: linear-gradient(to right, rgba(240,131,48,1) 0%, rgba(255,153,0,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f08330',
endColorstr='#ff9900', GradientType=1 );
color:Indigo;
}
input.formInputButton:active{
background: rgba(180,201,62,1);
background: -moz-linear-gradient(left, rgba(180,201,62,1) 0%, rgba(133,181,0,1) 100%);
background: -webkit-gradient(left top, right top, color-stop(0%, rgba(180,201,62,1)),
color-stop(100%, rgba(133,181,0,1)));
background: -webkit-linear-gradient(left, rgba(180,201,62,1) 0%, rgba(133,181,0,1)
100%);
background: -o-linear-gradient(left, rgba(180,201,62,1) 0%, rgba(133,181,0,1) 100%);
background: -ms-linear-gradient(left, rgba(180,201,62,1) 0%, rgba(133,181,0,1) 100%);
background: linear-gradient(to right, rgba(180,201,62,1) 0%, rgba(133,181,0,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b4c93e',
endColorstr='#85b500', GradientType=1 );
color:Indigo;
}
Resultado en el navegador:
Ejemplo 2: Confirmación de visita a enlaces que permite cancelar la visita de un sitio web al hacer clic en su
enlace o confirma que si quiere abrir en una pestaña nueva el sitio.
Guión 1: enlaces.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Lista de enlaces</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="css/fonts.css" />
<link rel="stylesheet" href="css/links.css" />
<script type="text/javascript" src="js/confirmlinks.js"></script>
<script type="text/javascript" src="js/modernizr.custom.js"></script>
</head>
<body>
<div class="container">
<header id="vintage">
<h1>Sitios web para aprender JavaScript</h1>
</header>
<section>
<article class="color-5">
<h2>Sitios en español</h2>
<nav id="cl-effect-19 a" class="cl-effect-19 a">
<a href="http://librosweb.es/javascript/" target="_blank">
<span data-hover="Libros.es">Libros.es</span>
</a>
<a href="http://www.cristalab.com/tutoriales/4-html-css-y-javascript/" target="_blank">
<span data-hover="Cristalab">Cristalab</span>
</a>
<a href="http://www.manualdejavascript.com/section/manualdejavascript/" target="_blank">
<span data-hover="Manual de JavaScript">Manual de JavaScript</span>
</a>
<a href="http://javascriptya.com.ar" target="_blank">
<span data-hover="JavaScript Ya">JavaScript Ya</span>
</a>
<a href="http://desarrolloweb.com/manuales/20/" target="_blank">
<span data-hover="Desarrollo Web">Desarrollo Web</span>
</a>
</nav>
</article>
<article class="color-1">
<h2>Sitios en inglés</h2>
<nav id="cl-effect-20 a" class="cl-effect-20 a">
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Getting_Started"
target="_blank">
<span data-hover="JavaScript MDN">JavaScript MDN</span>
</a>
<a href="http://www.jslab.dk/projects.php" target="_blank">
<span data-hover="JavaScript Lab">JavaScript Lab</span>
</a>
</nav>
</article>
</section>
</div>
</body>
</html>
Guión 2: fonts.css
@import url(http://fonts.googleapis.com/css?family=Bitter:400,700);
@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700|Raleway:400,300,700);
@font-face {
font-family: 'codropsicons';
src:url('../fonts/codropsicons/codropsicons.eot');
src:url('../fonts/codropsicons/codropsicons.eot?#iefix') format('embedded-
opentype'),
url('../fonts/codropsicons/codropsicons.woff') format('woff'),
url('../fonts/codropsicons/codropsicons.ttf') format('truetype'),
url('../fonts/codropsicons/codropsicons.svg#codropsicons') format('svg');
font-weight: normal;
font-style: normal;
}
Guión 3: links.css
*,
*:after,
*::before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
body {
background: rgba(49,48,51,1);
background: -moz-linear-gradient(left, rgba(49,48,51,1) 0%, rgba(75,70,77,1) 50%,
rgba(43,41,39,1) 100%);
background: -webkit-gradient(left top, right top, color-stop(0%, rgba(49,48,51,1)),
color-stop(50%, rgba(75,70,77,1)), color-stop(100%, rgba(43,41,39,1)));
background: -webkit-linear-gradient(left, rgba(49,48,51,1) 0%, rgba(75,70,77,1) 50%,
rgba(43,41,39,1) 100%);
background: -o-linear-gradient(left, rgba(49,48,51,1) 0%, rgba(75,70,77,1) 50%,
rgba(43,41,39,1) 100%);
background: -ms-linear-gradient(left, rgba(49,48,51,1) 0%, rgba(75,70,77,1) 50%,
rgba(43,41,39,1) 100%);
background: linear-gradient(to right, rgba(49,48,51,1) 0%, rgba(75,70,77,1) 50%,
rgba(43,41,39,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#313033',
endColorstr='#2b2927', GradientType=1 );
font-family: 'Raleway', sans-serif;
}
h1 {
color: hsl(163, 70%, 55%);
text-align: center;
font-family: 'codropsicons', Arial, Helvetica, "Liberation Sans";
font-size: 3.4em;
text-transform: uppercase;
text-shadow: 5px 5px 0px #eee, 7px 7px 0px #707070;
}
h2 {
text-shadow: -1px -1px 0px rgba(255,255,255,0.3),
.color-1 {
background: #0e83cd;
}
.color-5 {
background: #cd4436;
}
nav a {
position: relative;
display: inline-block;
margin: 15px 25px;
outline: none;
color: #fff;
text-decoration: none;
text-transform: uppercase;
letter-spacing: 1px;
font-weight: 400;
text-shadow: 0 0 1px rgba(255,255,255,0.3);
font-size: 1.35em;
}
nav a:hover,
nav a:focus {
outline: none;
}
.cl-effect-19 a span {
background: #e35041;
display: inline-block;
position: relative;
height: 88px;
padding: 0 14px;
-webkit-transition: -webkit-transform 0.4s, background 0.4s;
-moz-transition: -moz-transform 0.4s, background 0.4s;
-o-transition: transform 0.4s, background 0.4s;
-ms-transition: transform 0.4s, background 0.4s;
.cl-effect-20 a span {
position: relative;
display: inline-block;
padding: 3px 15px 0;
background: #587285;
box-shadow: inset 0 3px #2f4351;
-webkit-transition: background 0.6s;
-moz-transition: background 0.6s;
-o-transition: background 0.6s;
-ms-transition: background 0.6s;
transition: background 0.6s;
-webkit-transform-origin: 50% 0;
-moz-transform-origin: 50% 0;
-o-transform-origin: 50% 0;
-ms-transform-origin: 50% 0;
transform-origin: 50% 0;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform-origin: 0% 50%;
-moz-transform-origin: 0% 50%;
-o-transform-origin: 0% 50%;
-ms-transform-origin: 0% 50%;
transform-origin: 0% 50%;
}
.cl-effect-20 a span::before {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #fff;
color: #2f4351;
content: attr(data-hover);
-webkit-transform: rotateX(270deg);
-moz-transform: rotateX(270deg);
-o-transform: rotateX(270deg);
-ms-transform: rotateX(270deg);
transform: rotateX(270deg);
-webkit-transition: -webkit-transform 0.6s;
-moz-transition: -moz-transform 0.6s;
-o-transition: transform 0.6s;
-ms-transition: transform 0.6s;
transition: transform 0.6s;
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-o-transform-origin: 0 0;
-ms-transform-origin: 0 0;
transform-origin: 0 0;
pointer-events: none;
}
Guión 4: confirmlinks.js
//Iniciando el manejador para los enlaces de la página.
window.onload = confirmAllLinks;
Resultado:
Ejemplo 3: Formulario de captura de datos que indica al usuario con un elemento p oculto una breve ayuda
para llenar el campo apropiadamente. El elemento p se hace visible al activarse alguno de los campos del
formulario con un evento 'focus'. Al perder dicho campo el foco se oculta la pequeña capa de ayuda.
Guión 1: datos.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Captura de datos</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="css/basic.css" />
<link rel="stylesheet" href="css/form.css" />
<script tyep="text/javascript" src="js/focusblur.js"></script>
</head>
<body>
<header>
<h1>Datos personales</h1>
</header>
<section>
<article id="container">
<p id="textoAyuda"></p>
<form name="registro" id="hongkiat-form" method="post" action="javascript:void(0);">
<div id="wrapping" class="clearfix">
<section id="aligned">
<input type="text" name="nombre" id="firstname" placeholder="(Su nombre)"
autocomplete="off" tabindex="1" maxlength="25" class="txtinput requested" />
<input type="text" name="apellido" id="lastname" placeholder="(Su
apellido)" autocomplete="off" tabindex="2" maxlength="25" class="txtinput requested" />
<input type="email" name="email" id="email" placeholder="(Su correo
electrónico)" autocomplete="off" tabindex="3" maxlength="50" class="txtinput requested" />
<input type="tel" name="telephone" id="phone" placeholder="(Su número de
teléfono)" tabindex="4" class="txtinput" pattern="\d{7,9}" />
<textarea id="describe" class="txtblock" placeholder="(Descríbete)"
tabindex="5"></textarea>
</section>
<section id="buttons">
<input type="reset" name="reset" id="resetbtn" class="resetbtn" tabindex="8"
value="Cancelar">
<input type="submit" name="submit" id="submitbtn" class="submitbtn"
tabindex="9" value="Registrar">
<br style="clear:both;">
</section>
</form>
</article>
</section>
</body>
</html>
Guión 2: form.css
#container h2 {
border-bottom: 1px solid #ddd;
border-top: 1px solid #ddd;
color: #3C42E0;
font-family: "Droid Serif", Georgia, serif;
font-size: 2em;
font-weight: 500;
line-height: 1.8em;
margin-top: 10px;
margin-bottom: 12px;
padding: 12px 0;
text-align: center;
}
#container h3 {
letter-spacing: -0.04em;
font-weight: bold;
font-size: 1.4em;
margin-bottom: 10px;
margin-top: 0;
}
#container p {
color: #a42;
}
span.chyron {
font-size: 1.2em;
padding-top: 10px;
}
#hongkiat-form .txtinput {
display: block;
font-family: "Helvetica Neue", Arial, sans-serif;
border-style: solid;
border-width: 1px;
border-color: #dedede;
margin-bottom: 14px;
font-size: 1.2em;
#hongkiat-form .txtinput:focus {
color: #333;
border-color: rgba(41, 92, 161, 0.4);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
-o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
-ms-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
outline: 0 none;
}
#hongkiat-form .requested:focus {
font-weight: Bold;
}
#hongkiat-form .selmenu:focus {
color: #333;
border-color: rgba(41, 92, 161, 0.4);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
-o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
-ms-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(41, 92, 161, 0.6);
outline: 0 none;
}
#hongkiat-form input#firstname {
background: #fff url('../images/user.png') 5px 4px no-repeat;
display: inline-block;
float: left;
width: 36%;
}
#hongkiat-form input#secondname {
background: #fff url('../images/user2.png') 5px 4px no-repeat;
display: inline-block;
float: right;
width: 31.2%;
}
#hongkiat-form input#lastname {
background: url('../images/user3.png') 5px 4px no-repeat;
display: inline-block;
float: left;
width: 31.2%;
}
#hongkiat-form input#email {
background: url('../images/email.png') 5px 4px no-repeat;
}
#hongkiat-form input#phone {
background: url('../images/phone.png') 5px 4px no-repeat;
}
#hongkiat-form input#position {
background: #fff url('../images/chiefstaff.png') 5px 4px no-repeat;
}
#hongkiat-form input#firstname:focus {
background: rgba(250,245,120,0.5) url('../images/user.png') 5px 4px no-repeat;
}
#hongkiat-form input#lastname:focus{
background: rgba(250,245,120,0.5) url('../images/user3.png') 5px 4px no-repeat;
}
#hongkiat-form input#email:focus{
background: rgba(250,245,120,0.5) url('../images/email.png') 5px 4px no-repeat;
}
#hongkiat-form textarea.txtblock {
background: #fff url('../images/speech.png') 5px 4px no-repeat;
}
#hongkiat-form textarea {
display: block;
font-family: "Helvetica Neue", Arial, sans-serif;
border-style: solid;
border-width: 1px;
border-color: #dedede;
margin-bottom: 15px;
font-size: 1.2em;
padding: 11px 25px;
padding-left: 55px;
width: 85%;
height: 180px;
color: #777;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset;
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset;
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset;
-o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset;
-ms-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset;
transition: border 0.15s linear 0s, box-shadow 0.15s linear 0s, color 0.15s linear 0s;
-webkit-transition: border 0.15s linear 0s, box-shadow 0.15s linear 0s, color 0.15s
linear 0s;
-moz-transition: border 0.15s linear 0s, box-shadow 0.15s linear 0s, color 0.15s linear
0s;
-o-transition: border 0.15s linear 0s, box-shadow 0.15s linear 0s, color 0.15s linear
0s;
-ms-transition: border 0.15s linear 0s, box-shadow 0.15s linear 0s, color 0.15s linear
0s;
}
#hongkiat-form textarea:focus {
border-color: rgba(41, 92, 161, 0.4);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(40, 90, 160, 0.6);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(40, 90, 160, 0.6);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(40, 90, 160, 0.6);
-o-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(40, 90, 160, 0.6);
-ms-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) inset, 0 0 8px rgba(40, 90, 160, 0.6);
color: #333;
outline: 0 none;
}
#hongkiat-form select#profesion {
background: #fff url('../images/chiefstaff.png') 5px 4px no-repeat;
width: 100%;
}
#hongkiat-form select#selpais {
background: #fff url('../images/mundi.png') 5px 4px no-repeat;
width: 100%;
}
#hongkiat-form #slider {
width: 60%;
}
#hongkiat-form #aligned {
box-sizing: border-box;
float: left;
margin-right: 60px;
width: 500px;
}
#hongkiat-form #aside {
box-sizing: border-box;
float: left;
padding: 0;
width: 310px;
}
#wrapping {
box-sizing: border-box;
width: 100%;
}
span.radiobadge {
display: block; margin-bottom: 8px;
}
span.radiobadge label {
font-size: 1.2em; padding-bottom: 4px;
}
select.selmenu {
border: 1px solid #aaa;
color: #676767;
font-size: 17px;
padding: 11px 25px 11px 66px;
#buttons {
display: block;
padding-top: 4px;
}
#buttons #resetbtn {
color: #515151;
display: block;
float: left;
text-shadow: -1px 1px 0px #fff;
margin-right: 20px;
height: 2.2em;
padding: 0 1em;
outline: 0;
font-weight: bold;
font-size: 1.2em;
vertical-align: middle;
cursor: pointer;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
-o-border-radius: 2px;
-ms-border-radius: 2px;
border-radius: 2px;
background-color: #fff;
background-image: -moz-linear-gradient(top, rgb(255,255,255) 2%, rgb(240,240,240) 2%,
rgb(222,222,222) 100%);
background-image: -webkit-gradient(linear, left top, left bottom, color-
stop(2%,rgb(255,255,255)), color-stop(2%,rgb(240,240,240)), color-
stop(100%,rgb(222,222,222)));
background-image: -webkit-linear-gradient(top, rgb(255,255,255) 2%,rgb(240,240,240)
2%,rgb(222,222,222) 100%);
background-image: -o-linear-gradient(top, rgb(255,255,255) 2%,rgb(240,240,240)
2%,rgb(222,222,222) 100%);
background-image: -ms-linear-gradient(top, rgb(255,255,255) 2%,rgb(240,240,240)
2%,rgb(222,222,222) 100%);
background-image: linear-gradient(top, rgb(255,255,255) 2%,rgb(240,240,240)
2%,rgb(222,222,222) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff',
endColorstr='#dedede',GradientType=0 );
border: 1px solid #969696;
-moz-box-shadow: 0 1px 2px rgba(144, 144, 144, 0.4);
-webkit-box-shadow: 0 1px 2px rgba(144, 144, 144, 0.4);
-o-box-shadow: 0 1px 2px rgba(144, 144, 144, 0.4);
-ms-box-shadow: 0 1px 2px rgba(144, 144, 144, 0.4);
box-shadow: 0 1px 2px rgba(144, 144, 144, 0.4);
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
white-space: nowrap;
word-wrap: normal;
}
#buttons #resetbtn:hover {
color: #818181;
background-color: #fff;
background-image: -moz-linear-gradient(top, rgb(255,255,255) 2%, rgb(244,244,244) 2%,
rgb(229,229,229) 100%);
background-image: -webkit-gradient(linear, left top, left bottom, color-
stop(2%,rgb(255,255,255)), color-stop(2%,rgb(244,244,244)), color-
stop(100%,rgb(229,229,229)));
#buttons #submitbtn {
display: block;
float: left;
height: 2.2em;
padding: 0 1em;
border: 1px solid;
outline: 0;
font-weight: bold;
font-size: 1.2em;
color: #fff;
text-shadow: 0px 1px 0px #222;
white-space: nowrap;
word-wrap: normal;
vertical-align: middle;
cursor: pointer;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
-o-border-radius: 2px;
-ms-border-radius: 2px;
border-radius: 2px;
border-color: #26adeb #2093ca #111;
-moz-box-shadow: inset 0 1px 0 rgba(256,256,256,.35);
-webkit-box-shadow: inset 0 1px 0 rgba(256,256,256,.35);
-o-box-shadow: inset 0 1px 0 rgba(256,256,256,.35);
-ms-box-shadow: inset 0 1px 0 rgba(256,256,256,.35);
box-shadow: inset 0 1px 0 rgba(256,256,256,.35);
background: rgba(75,182,232,1);
background: -moz-linear-gradient(top, rgba(75,182,232,1) 0%, rgba(25,111,204,1) 100%);
background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(75,182,232,1)),
color-stop(100%, rgba(25,111,204,1)));
background: -webkit-linear-gradient(top, rgba(75,182,232,1) 0%, rgba(25,111,204,1)
100%);
background: -o-linear-gradient(top, rgba(75,182,232,1) 0%, rgba(25,111,204,1) 100%);
background: -ms-linear-gradient(top, rgba(75,182,232,1) 0%, rgba(25,111,204,1) 100%);
background: linear-gradient(to bottom, rgba(75,182,232,1) 0%, rgba(25,111,204,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4bb6e8',
endColorstr='#196fcc', GradientType=0 );
}
#buttons #submitbtn:hover,
#buttons #submitbtn:active {
border-color: #32b9fc #3090af #000;
color: #fff;
-moz-box-shadow: inset 0 1px 0 rgba(256,256,256,0.4),0 1px 3px rgba(0,0,0,0.5);
.clearfix {
display: inline-block;
}
p#textoAyuda {
background: rgba(209,92,107,1);
background: -moz-linear-gradient(left, rgba(209,92,107,1) 0%, rgba(250,113,129,1)
100%);
background: -webkit-gradient(left top, right top, color-stop(0%, rgba(209,92,107,1)),
color-stop(100%, rgba(250,113,129,1)));
background: -webkit-linear-gradient(left, rgba(209,92,107,1) 0%, rgba(250,113,129,1)
100%);
background: -o-linear-gradient(left, rgba(209,92,107,1) 0%, rgba(250,113,129,1) 100%);
background: -ms-linear-gradient(left, rgba(209,92,107,1) 0%, rgba(250,113,129,1) 100%);
background: linear-gradient(to right, rgba(209,92,107,1) 0%, rgba(250,113,129,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d15c6b',
endColorstr='#fa7181', GradientType=1 );
border-radius: 3px;
color: rgb(240,240,240);
font: Normal 1em Arial,Helvetica,"Liberation Sans";
margin-bottom: 20px;
padding: 10px 12px;
top:0;
right:0;
text-shadow: 2px 2px 0px rgba(225,225,225,0.2);
visibility: hidden;
width: 30%;
}
Guión 3: basic.css
* {
margin: 0;
padding: 0;
}
body {
font-size: 14px;
}
header h1 {
font: Bold 3.6em Arial,Helvetica,"Liberation Sans";
color: rgb(75,182,232);
text-align: center;
text-shadow: 0 1px 0 #ccc,
0 2px 0 #a9c9e9,
0 3px 0 #bbb,
0 4px 0 #b9b9b9,
0 5px 0 #aaa,
0 6px 1px rgba(0,0,0,.1),
0 0 5px rgba(0,0,0,.1),
0 1px 3px rgba(0,0,0,.3),
0 3px 5px rgba(0,0,0,.2),
0 5px 10px rgba(0,0,0,.25),
0 10px 10px rgba(0,0,0,.2),
0 20px 20px rgba(0,0,0,.15);
}
Guión 4: focusblur.js
//Elemento con la capa de ayuda a mostrar en los campos de formulario
var textoAyuda;
//Matriz con los mensajes de ayuda asociados a cada control de formulario
var arregloAyuda = [
"Ingrese su nombre en este campo de texto",
"Ingrese su apellido en este campo de texto",
"Ingrese su dirección de correo en el formato usuario@dominio.com",
"Ingrese su número de teléfono en el formato 9999-0000",
"Ingrese una descripción breve en el campo área de texto",
"Seleccione su profesión en este campo select",
"Díganos cuál es su país de origen en este campo select",
"Restablezca el formulario con este botón",
"Envíe el formulario con este botón",
""
];
Ejemplo 4: Ejemplo que muestra cómo validar un campo de texto en un formulario para que solamente
acepte números utilizando el evento keypress, definido como atributo del elemento INPUT usando el
modelo de eventos Nivel 0 del DOM. Este modelo es el único admitido al 100% en todos los navegadores,
pero a la vez, es el más limitado.
Guión 1: solonumeros.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Máscaras del teclado</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="css/numbers.css">
<script type="text/javascript" src="js/filternumbers.js"></script>
</head>
<body>
<h1>El campo solo acepta números</h1><hr>
<form name="frmmask">
<label for="serialnumber">Número de serie: </label>
<input type="number" name="serialnumber" id="txtserial" maxlength="10"
onkeypress="return numbersOnly(this, event)" title="El número de serie contiene únicamente
dígitos" />
</form>
</body>
</html>
Guión 2: numbers.css
h1 {
background-color:Lavender;
border:double 5px rgb(55,33,99);
font-family:"Bookman Old Style";
font-weight:800;
font-size:20pt;
text-align:center;
}
label {
color:SaddleBrown;
font-family:"Century Gothic";
font-weight:500;
font-size:10pt;
}
input {
background-color:Wheat;
font-family:"Franklin Gothic Demi";
font-weight:400;
font-size:10pt;
color:Maroon;
Guión 3: filternumbers.js
// Mostrar la tecla presionada. En una aplicación real no debería hacerlo.
// Probablemente sería buena idea mostrar únicamente en el caso que
// se ingresen teclas que no sean números.
function showChar(e){
var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode; //Todos los navegadores menos Netscape 4.0 o inferior
else if (e.which) code = e.which; //Netscape 4.0 o inferior
var character = String.fromCharCode(code);
//alert('La tecla presionada fue: ' + character);
}
Ejemplo 5: Ejemplo que muestra cómo generar imágenes aleatorias simulando un juego de tirar 6 dados. Se
utilizar JavaScript no invasivo para hacer que dando clic en un botón se simule cada lanzamiento que
muestra en la posición de cada imagen el dado seleccionado aleatoriamente mediante la función random(),
limitada para obtener únicamente valores entre 1 y 6.
Guión 1: tirardados.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Tiro de dados</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="css/dados.css" />
<link href="css/button.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/tirodados.js"></script>
</head>
<body>
<!-- <form action="javascript:void(0);">
Guión 2: dados.css
* {
margin: 0;
padding: 0;
}
body {
font-size: 16px;
}
#buttonarea {
margin: 24px auto;
width: 56%;
}
ol {
background: rgba(118,187,204,1);
background: -moz-linear-gradient(left, rgba(118,187,204,1) 0%,
rgba(78,197,230,1) 52%, rgba(34,155,189,1) 100%);
background: -webkit-gradient(left top, right top, color-stop(0%,
rgba(118,187,204,1)), color-stop(52%, rgba(78,197,230,1)), color-stop(100%,
rgba(34,155,189,1)));
background: -webkit-linear-gradient(left, rgba(118,187,204,1) 0%,
rgba(78,197,230,1) 52%, rgba(34,155,189,1) 100%);
background: -o-linear-gradient(left, rgba(118,187,204,1) 0%,
rgba(78,197,230,1) 52%, rgba(34,155,189,1) 100%);
ol li {
display: inline-block;
margin-right: 16px;
}
Guión 3: dados.css
.randombutton {
background-color:#3bb3e0;
font-family: 'Open Sans', sans-serif;
font-size:13px;
font-weight:Bold;
text-decoration:none;
color:#fff;
position:relative;
padding:10px 20px;
padding-right:50px;
margin-bottom: 30px;
background-image: linear-gradient(bottom, rgb(44,160,202) 0%, rgb(62,184,229)
100%);
background-image: -o-linear-gradient(bottom, rgb(44,160,202) 0%,
rgb(62,184,229) 100%);
background-image: -moz-linear-gradient(bottom, rgb(44,160,202) 0%,
rgb(62,184,229) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(44,160,202) 0%,
rgb(62,184,229) 100%);
background-image: -ms-linear-gradient(bottom, rgb(44,160,202) 0%,
rgb(62,184,229) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgb(44,160,202)), color-stop(1,
rgb(62,184,229)));
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-o-border-radius: 5px;
-ms-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #156785, 0px
10px 5px #999;
-moz-box-shadow: inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #156785, 0px 10px
5px #999;
-o-box-shadow: inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #156785, 0px 10px
5px #999;
-ms-box-shadow: inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #156785, 0px 10px
5px #999;
box-shadow: inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #156785, 0px 10px 5px
#999;
color:#fff;
}
.randombutton:active {
top:3px;
background-image: linear-gradient(bottom, rgb(62,184,229) 0%, rgb(44,160,202)
100%);
background-image: -o-linear-gradient(bottom, rgb(62,184,229) 0%,
rgb(44,160,202) 100%);
background-image: -moz-linear-gradient(bottom, rgb(62,184,229) 0%,
rgb(44,160,202) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(62,184,229) 0%,
rgb(44,160,202) 100%);
background-image: -ms-linear-gradient(bottom, rgb(62,184,229) 0%,
rgb(44,160,202) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgb(62,184,229)),
color-stop(1, rgb(44,160,202))
);
-webkit-box-shadow: inset 0px 1px 0px #2ab7ec, 0px 2px 0px 0px #156785, 0px
5px 3px #999;
-moz-box-shadow: inset 0px 1px 0px #2ab7ec, 0px 2px 0px 0px #156785, 0px 5px
3px #999;
-o-box-shadow: inset 0px 1px 0px #2ab7ec, 0px 2px 0px 0px #156785, 0px 5px 3px
#999;
-ms-box-shadow: inset 0px 1px 0px #2ab7ec, 0px 2px 0px 0px #156785, 0px 5px
3px #999;
box-shadow: inset 0px 1px 0px #2ab7ec, 0px 2px 0px 0px #156785, 0px 5px 3px
#999;
}
.randombutton::before {
background-color:#2591b4;
background-image:url(../img/arrowright.png);
background-repeat:no-repeat;
background-position:center center;
content:"";
width:20px;
height:20px;
position:absolute;
right:15px;
top:50%;
margin-top:-9px;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
-o-border-radius: 50%;
-ms-border-radius: 50%;
border-radius: 50%;
-webkit-box-shadow: inset 0px 1px 0px #052756, 0px 1px 0px #60c9f0;
-moz-box-shadow: inset 0px 1px 0px #052756, 0px 1px 0px #60c9f0;
-o-box-shadow: inset 0px 1px 0px #052756, 0px 1px 0px #60c9f0;
-ms-box-shadow: inset 0px 1px 0px #052756, 0px 1px 0px #60c9f0;
box-shadow: inset 0px 1px 0px #052756, 0px 1px 0px #60c9f0;
}
.randombutton:active::before {
top:50%;
margin-top:-12px;
-webkit-box-shadow: inset 0px 1px 0px #60c9f0, 0px 3px 0px #0e3871, 0px 6px
3px #1a80a6;
-moz-box-shadow: inset 0px 1px 0px #60c9f0, 0px 3px 0px #0e3871, 0px 6px 3px
#1a80a6;
-o-box-shadow: inset 0px 1px 0px #60c9f0, 0px 3px 0px #0e3871, 0px 6px 3px
#1a80a6;
-ms-box-shadow: inset 0px 1px 0px #60c9f0, 0px 3px 0px #0e3871, 0px 6px 3px
#1a80a6;
box-shadow: inset 0px 1px 0px #60c9f0, 0px 3px 0px #0e3871, 0px 6px 3px #1a80a6;
}
Guión 4: tirodados.js
//Variables utilizadas para interactuar con los elementos img presentes en la
página
var imagenDado1;
var imagenDado2;
var imagenDado3;
var imagenDado4;
var imagenDado5;
var imagenDado6;
function tirarDados(){
establecerImagen(imagenDado1);
establecerImagen(imagenDado2);
establecerImagen(imagenDado3);
establecerImagen(imagenDado4);
establecerImagen(imagenDado5);
establecerImagen(imagenDado6);
}
function establecerImagen(imgDado){
var valorDado = Math.floor(1+Math.random()*6);
//Estableciendo el atributo src de la imagen
imgDado.setAttribute("src", "img/dice" + valorDado + ".png");
//Estableciendo el atributo alt de la imagen
imgDado.setAttribute("alt", "Imagen del dato con el valor " + valorDado);
}
if(window.addEventListener){
window.addEventListener("load", iniciar, false);
}
else{
window.attachEvent("onload", iniciar);
}
Resultado:
V. DISCUSION DE RESULTADOS
Nota: Cree una carpeta para guardar cada uno de los scripts de esta parte y nómbrela analisisguia5aps1. Deberá
entregar el análisis de resultados y la investigación complementaria en la siguiente práctica mediante correo
electrónico.
1. Cree una calculadora relativamente básica que permita realizar cálculos utilizando funciones. Las
operaciones que debe permitir la calculadora son: suma, resta, multiplicación, división, residuo, inversa de
un número, porcentaje, cuadrado de un número y raíz cuadrada. Utilice la llamada la función con
parámetros y una interfaz como la mostrada a continuación:
NOTA: Utilice para todos los problemas formularios y JavaScript no invasivo (unobstrusive JavaScript).
No vale usar prompt para capturar los datos del usuario.
VII. BIBLIOGRAFIA
Flanagan, David. JavaScript La Guía Definitiva. 1ra Edición. Editorial ANAYA Multimedia. 2007. Madrid,
España.
Deitel, Paul / Deitel, Harvey / Deitel, Abbey. Internet & World Wide Web. Cómo programar. 5ta Edición.
Editorial Pearson. 2014. México D.F..
McFedries, Paul. JavaScript Edición Especial. 1ra Edición. Editorial Prentice Hall. 2002. Madrid, España.
Powell, Thomas / Schneider, Fritz. JavaScript Manual de Referencia. 1ra Edición. Editorial McGraw-Hill.
2002. Madrid, España.