Horváth Győző
Egyetemi adjunktus
1117 Budapest, Pázmány Péter sétány 1/c., 2.408-as szoba
Tel: (1) 372-2500/8469
horvath.gyozo@inf.elte.hu
prompt, confirm)console.log, alert, document.writeln)
prompt és alertvar nev = prompt('Hogy hívnak?', 'Senki bácsi');
alert('Hello ' + nev + '!');
<form>
Név: <input type="text">
<br>
<input type="button" value="Köszönj!">
</form>
[ ] Reagálni a gomb lenyomására.[ ] Kiolvasni a szöveges beviteli mező értékét (beolvasás).[✔] Előállítani a bemenet alapján a kimenetet, azaz az üdvözlő szöveget (feldolgozás).[ ] Megjeleníteni az üdvözlő szöveget (kiírás).Dokumentum Objektum Modell (DOM)
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form id="form1">
Név: <input type="text" name="nev" id="nev">
<br>
<input type="button" value="Köszönj!" name="gomb" id="nev">
</form>
</body>
</html>
document.getElementById('id')document.querySelector('szelektor')Név: <input type="text" id="nev">
document.getElementById('nev')
document.querySelector('#nev')
document.querySelector('input[type=text]')
document.querySelector('body > form:nth-child(1) > input:nth-child(1)')
// Változóba kimentve
var nev = document.querySelector('#nev');
document.querySelectorAll('szelektor')var inputs = document.querySelectorAll('input');
console.log(inputs); // Tömbszerű objektum
// Iterálás
for (var i = 0; i < inputs.length; i++) {
var input = inputs[i];
console.log(input.innerHTML);
}
// Iterálás (ES6)
for (var input of inputs) {
console.log(input.innerHTML);
}
document.getElementById('id')document.querySelector('#id')Attribútum-programozás
Analóg, felfedező, referencia alapú módszer
getElementById
HTML
<input type="text" name="nev" id="nev">
JavaScript
document.querySelector('#nev').value
// Például:
var nev = document.querySelector('#nev').value;
// Írható olvasható tulajdonság
document.querySelector('#nev').value = 'Győző';
value)value)Inline, tradícionális, szabványos, IE specifikus módszer
<!-- Általában -->
<elem ontípus="javascript kód">
<!-- Például -->
<input type="button" id="gomb" onclick="hello()">
elem.ontípus = függvény;
// És NEM:
elem.ontípus = függvény();
// Törlés
elem.ontípus = null;
// Például
document.querySelector('#gomb').onclick = hello;
addEventListener, removeEventListener// Hozzáadás/regisztrálás
elem.addEventListener('típus', fuggveny, false);
// Elvétel/leiratkozás
elem.removeEventListener('típus', fuggveny, false);
// Például
var gomb = document.querySelector('#gomb');
gomb.addEventListener('click', hello, false);
<form id="form1">
Név: <input type="text" id="nev">
<br>
<input type="button" value="Köszönj!" id="gomb" onclick="hello()">
</form>
<script type="text/javascript">
function hello() {
//...
}
</script>
innerHTML
console.log nem látszikalert() csúnyadocument.writeln() lezárt dokumentumra nem működik: újat nyit
innerHTML
elem.innerHTML = 'Tetszőleges <i>HTML</i> szöveg'; //írás
console.log(elem.innerHTML); //olvasás
var p = document.querySelector('p');
// Olvasás
console.log(p.innerHTML);
// Írás
p.innerHTML = 'Tetszőleges <i>HTML</i> szöveg';
<form id="form1">
Név: <input type="text" id="nev">
<br>
<input type="button" value="Köszönj!" id="gomb" onclick="hello()">
<br>
<span id="kimenet"></span>
</form>
document.getElementById('kimenet').innerHTML = 'Hello világ!';
<form id="form1">
Név: <input type="text" id="nev"> <br>
<input type="button" value="Köszönj!" id="gomb" onclick="hello()">
<br>
<span id="kimenet"></span>
</form>
<script>
function nevbolUdvozles(nev) {
return `Hello ${nev}!`;
}
function hello() {
//Beolvasás
var nev = document.querySelector('#nev').value;
//Feldolgozás
var udvozles = nevbolUdvozles(nev);
//Kiírás
document.querySelector('#kimenet').innerHTML = udvozles;
}
</script>
$() és $$() függvény
HTML és JavaScript szétválasztása
$() és $$() függvénydocument.querySelector()
$() függvény
document.querySelector() helyett$$() függvény
document.querySelectorAll() helyettdocument.querySelector('#id') ---> $('#id')
$() és $$() függvényCsomagoló függvények:
function $(selector) {
return document.querySelector(selector);
}
function $$(selector) {
return document.querySelectorAll(selector);
}
<form>
Név: <input type="text" id="nev">
<br>
<input type="button" value="Köszönj!" id="gomb" onclick="hello()">
<br>
<span id="kimenet"></span>
</form>
<script>
function $(selector) {
return document.querySelector(selector);
}
function nevbolUdvozles(nev) {
return `Hello ${nev}!`;
}
function hello() {
var nev = $('#nev').value;
var udvozles = nevbolUdvozles(nev);
$('#kimenet').innerHTML = udvozles;
}
</script>
Függvénydefiníciók külön állományba
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script src="hello.js"></script>
</head>
<body>
<form>
Név: <input type="text" id="nev">
<br>
<input type="button" value="Köszönj!" id="gomb" onclick="hello()">
<br>
<span id="kimenet"></span>
</form>
</body>
</html>
<head>-ben
window objektum load eseménykezelő függvényben</body> előtt közvetlenül
Szkript a </body> előtt
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form>
Név: <input type="text" id="nev">
<br>
<input type="button" value="Köszönj!" id="gomb">
<br>
<span id="kimenet"></span>
</form>
<script src="hello.js"></script>
</body>
</html>
</body> előtt működik<head>-ben → még nem működik
//Függvénydefiníciók
function $(selector) {
return document.querySelector(selector);
}
function nevbolUdvozles(nev) {
return `Hello ${nev}!`;
}
function hello() {
var nev = $('#nev').value;
var udvozles = nevbolUdvozles(nev);
$('#kimenet').innerHTML = udvozles;
}
//Eseménykezelők regisztrálása
$('#gomb').addEventListener('click', hello, false);
Szkript a <head>-ben
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script src="hello.js"></script>
</head>
<body>
<form>
Név: <input type="text" id="nev">
<br>
<input type="button" value="Köszönj!" id="gomb">
<br>
<span id="kimenet"></span>
</form>
</body>
</html>
Szkript a <head>-ben
//Segédfüggvények
function $(selector) {
return document.querySelector(selector);
}
//Feldolgozó függvények
function nevbolUdvozles(nev) {
return `Hello ${nev}!`;
}
//Eseménykezelő függvények
function hello() {
var nev = $('#nev').value;
var udvozles = nevbolUdvozles(nev);
$('#kimenet').innerHTML = udvozles;
}
function init() {
//Eseménykezelők regisztrálása
$('#gomb').addEventListener('click', hello, false);
}
window.addEventListener('load', init, false);
</body> előtt (progresszív betöltés)$() és $$() segédfüggvények
<!-- ... -->
<body>
<input type="text" name="todo" id="txtTodo">
<input type="button" value="Hozzáad" id="btnAdd">
<ul id="ulLista"></ul>
<script src="todo.js"></script>
</body>
<!-- ... -->
// Segédfüggvények
function $(selector) {
return document.querySelector(selector);
}
function $$(selector) {
return document.querySelectorAll(selector);
}
// Adatok
var list = [];
function addTodo(todo) {
list.push(todo);
}
function getList() {
return list;
}
// HTML generálók
function genList(list) {
var s = '';
for (var todo of list) {
s += genLi(todo);
}
return s;
}
function genLi(todo) {
return `<li>${todo}</li>`;
}
// Eseménykezelők
$('#btnAdd').addEventListener('click', onButtonClick, false);
function onButtonClick(e) {
// Beolvasás
var todoText = $('#txtTodo').value;
// Feldolgozás
addTodo(todoText);
// Kiírás
$('#ulLista').innerHTML = genList( getList() )
// $('#ulLista').innerHTML += genLi( todoText );
}
// Segédfüggvények
function $(selector) {
return document.querySelector(selector);
}
function $$(selector) {
return document.querySelectorAll(selector);
}
/////////////////////////////////////////////////
// Eseménykezelők
$('#btnAdd').addEventListener('click', onButtonClick, false);
function onButtonClick(e) {
// Beolvasás
var todoText = $('#txtTodo').value;
// Feldolgozás
addTodo(todoText);
// Kiírás
$('#ulLista').innerHTML = genList( getList() )
// $('#ulLista').innerHTML += genLi( todoText );
}
/////////////////////////////////////////////////
// Adatok
var list = [];
function addTodo(todo) {
list.push(todo);
}
function getList() {
return list;
}
/////////////////////////////////////////////////
// HTML generálók
function genList(list) {
var s = '';
for (var todo of list) {
s += genLi(todo);
}
return s;
}
function genLi(todo) {
return `<li>${todo}</li>`;
}
Blokkok megjegyzéssel elválasztva:
$() és $$())$())innerHTML)addEventListener)