====== Introducció a Javascript ======
[[https://developer.mozilla.org/es/docs/Web/JavaScript|Javascript]] és el llenguatge més popular a internet. **Javascript es va dissenyar per a fer-se servir dins els navegador i enriquir els documents HTML, fins al punt de permetre crear aplicacions en el propi //browser//**. Progressivament han anat apareixent implementacions en altres àmbits fora del navegador, la més destacable és com servidor web amb [[NodeJS]], però també en documents PDF o aplicacions d'escriptori.
Ull a no confondre amb [[Java]], el nom és similar (ambdós marques registrades de Oracle) però els paradigmes i usos d'ambdós son ben diferents.
{{javascript.jpg}}
{{tag> #DawMp06 #DawMp06Uf1 #DawMp06Uf01 javascript #DamMpDual #DamMpProjecte }}
===== Referències =====
Referències:
* [[https://www.w3schools.com/js/default.asp|Javascript a W3Schools]]
* [[https://www.w3schools.com/jS/js_objects.asp|Objectes de Javascript]]. Equivalen als diccionaris o arrays associatius d'altres llenguatges.
* [[https://www.w3schools.com/js/js_htmldom.asp|DOM del browser: Document-Object Model]]
* jQuery a bytes.cat: [[jQuery]].
* [[https://www.w3schools.com/jquery/jquery_get_started.asp|jQuery a W3Schools]]
Comentaris ràpids per entrar a Javascript:
* ''var'' era la manera de definir variables abans del 2015 en Javascript.
* ''let'' és la manera de definir variables des del 2015 endavant.
* Un ''Object'' de Javascript és com un diccionari, només que pot emmagatzemar funcions, a part de variables primitives.
* Podem fer proves de Javascript a la consola del //browser//:Firefox -> Mes eines -> Web Developer Tools -> Consola
* La consola de JS del //browser// ens permetrà depurar amb molta facilitat ja que podem inspeccionar les variables en qualsevol moment.
\\
===== Objects o diccionaris =====
En Javascript disposem de ''[[https://www.w3schools.com/jS/js_objects.asp|Object]]'' com a estructura de dades, però **cal no confondre el ''Object'' de JS amb una ''class''**. És molt similar a un diccionari o //array// associatiu de Python, que a més ens permet emmagatzemar funcions. Això el fa molt versàtil, tot i que molta gent el considera poc formal.
Prova aquest exemple de ''Object'' a la consola:
let cotxe = { "marca": "Teat", "model": "Panta" }
Puc accedir a l'atribut "model" de 2 maneres:
console.log( cotxe["model"] )
console.log( cotxe.model )
Afegir una funció a un ''Object'':
var myObj = {
fun: function() {
console.log("my fun");
} ,
myData: "un string qualsevol"
}
Podeu provar codi Javascript:
* A la consola del //browser//Firefox -> Més eines -> Web Developer Tools -> Consola
* Al terminal amb NodeJS:
Si teniu instal·lat [[nodejs_express|NodeJS]], podeu provar aquests exemples simplement obrint una consola de node al terminal (tant en GNU/Linux com en Windows):
$ node
> var a = 1;
> console.log(a);
1
> var o = { fun: function() {console.log("my fun"); } , dada: 1}
> o.fun()
"my fun"
>
\\
===== DOM: Document-Object Model =====
Javascript es va crear per modificar les pàgines HTML en el //browser// i, per tant, disposen de funcions d'accés i modificació al **document**. [[https://www.w3schools.com/js/js_htmldom_methods.asp|El DOM o //Document-Object Model// ens permet accedir amb facilitat al contingut HTML i modificar-lo]].
Per exemple, un camp de text per a formulari (input), un paràgraf (p) i un span com aquests:
El meu nom
El meu nom és:
Nom:
Fes un arxiu HTML amb el contingut anterior, obre la consola de Javascript com s'explica més amunt, i executa les ordres a la consola:
var elem = document.getElementById("nameInput");
console.log(elem.value)
Si no heu escrit res dins el input text us hauria de sortir '''', però si escriviu alguna cosa a dins i executeu de nou, us hauria de sortir el què hagueu escrit:
console.log(elem.value)
Si ara volem mostrar el nostre nom dins d'un element HTML (en aquest cas, el ''SPAN id="nom"'', ho podem fer amb:
document.getElementById("nom").innerHTML = elem.value;
**Què ha passat quan has executat la darrera instrucció?**
Per accedir al contingut dels elements HTML normals utilitzem ''element.innerHTML''.
Per accedir al contingut dels elements de formulari utilitzem ''element.value''.
\\
===== Exercici de login i registre =====
Exercici d'aproximació ràpida si sabeu programar en altres llenguatges i coneixeu mínimament HTML.
Part 1 - HTML i login:
- Crea una pàgina HTML amb 2 formularis amb diferents colors de fons:
* **Formulari de Login**: amb usuari i contrasenya.
* **Formulari de Registre**: amb usuari, email, contrasenya.
- Defineix un [[https://www.w3schools.com/jS/js_objects.asp|Object de JS]], a mode de diccionari, amb dos usuaris amb contrasenya. Fes-ho en una variable global que ens faciliti després afegir més usuaris.
- Assegura't que els botons no recarreguin la pàgina (és suficient amb no posar tag