var meaningOfLife = 42; // typeof meaningOfLife = 'number' var wantedGrade = 6.0; // typeof wantedGrade = 'number' var firstLine = "So long\n"; // typeof firstLine == 'string' var secondLine = 'And thanks for all the fish!'; // no difference between ' and " var happy = true; // typeof happy = 'boolean' var nothing; // typeof nothing = 'undefined'
Всичко останало - масиви, обекти, функции и тн - са обекти
Индексирана последователност от елементи. Няма ограничение за хомогенност на елементите.
var fibonacci = [undefined, true, 1, 'two', 3.0, 5, 7]; alert(fibonacci[3]); // 'two' alert(fibonacci.length); // 7 alert(fibonacci.indexOf(3)); // 4 alert(fibonacci.indexOf(4)); // -1 alert(fibonacci.slice(1, 3)); // [true, 1] // push, pop, shift, unshift, sort are also available // ES5 gives us forEach, map, filter, reduce etc typeof fibonacci // object Array.isArray(fibonacci) // true fibonacci.splice(index, removeCount, item1, item2, ...) ¿
splice задава индекс от който да премахва removeCount елементи (ако е > 0) и добавя нови елементи (ако се подадат такива аргументи)
console.log(fibonacci.splice(0, 1, false)); // [undefined] console.log(fibonacci); // [false, true, 1, 'two', 3.0, 5, 7] fibonacci.splice(2, 0, 'one'); console.log(fibonacci); // [false, true, 'one', 1, 'two', 3.0, 5, 7] console.log(fibonacci.splice(3, 1)); // [1] console.log(fibonacci); // [false, true, 'one', 'two', 3.0, 5, 7]
Не се използва често, понеже мутира масива и работата с index-и е error prone, но е най-ефективният начин да се премахне елемент от масив
Може да ползвате arr.filter(e => e !== item) ако искате да получите нов масив без съответни елементи без мутиране на оригиналния
Или още map, хешове, речници, асоциативни масиви и други. Съдържа двойки с ключ и стойност. Ключовете са низове.
var person = {firstName: 'Chuck', lastName: 'Norris', powerLevel: 9001};
alert(person.firstName); // Chuck
alert(person['lastName']); // NorrisПървият начин (с точката) е за предпочитане.
function add(a, b) {
return a + b;
}
var add = function (a, b) {
return a + b;
};
// ES6 arrow function - doesn't work in 13% of browsers
var add = (a, b) => a + b;
console.log(add(1, 2, 5)); // returns 3, ignores last argumentif (cond) {
...
} else if (cond) {
...
} else {
...
}
isHappy ? 'smile' : 'frown';
switch (n) {
case 1: ... break;
case 2: ... break;
default: ...
}while (condition) { ... }
do { ... } while (condition);
var cars = ['Audi', 'BMW', 'Mercedes-Benz', 'Opel', 'Porsche', 'Volkswagen'];
for (var i = 0; i < cars.length; i++) {
console.log(cars[i]);
}
cars.forEach(function(car, index){
console.log(car);
});
cars.forEach(car => console.log(car));var person = {firstName: 'John', lastName: 'Doe', age: 25};
var txt = '';
for (var key in person) {
txt += person[key] + ' ';
}
console.log(txt); // John Doe 25
console.log(Object.values(person).join(' ')); // John Doe 25
Object.keys(person); // ['firstName', 'lastName', 'age']
Object.values(person); // ['John', 'Doe', 25]
Object.entries(person); // [ ['firstName', 'John'], ['lastName', 'Doe'], ['age', 25] ]Атрибути на script тага:
`type` - какъв тип скрипт закачаме за HTML документа
По default е `type="text/javascript"`

var title = document.getElementById('page-title'); // HTMLElement - only 1 element!
var items = document.getElementsByTagName('li'); // HTMLCollection
var foods = document.getElementsByClassName('food'); // HTMLCollection
foods[0].textContent += ' Hut'; // Pizza Hut
title.innerHTML += ' <em>example</em>'; // Selection <em>example</em>
console.log(title.textContent); // Selection example
// ES5 - use any CSS selector
var water = document.querySelector('.drink'); // only water
var drinks = document.querySelectorAll('.drink'); // water and wine// Create
var text = document.createTextNode('text node content');
var div = document.createElement('div');
// Add
div.appendChild(text);
document.body.appendChild(div);
// Delete
var list = document.getElementById('myList');
list.removeChild(list.childNodes[0]);// Create handler
var clickHandler = function(event) {
console.log(event); // See what you'll get in the console
};
var button = document.getElementById('mybutton');
button.addEventListener('click', clickHandler);
button.removeEventListener('click', clickHandler);
// Alternative - not very recommended
button.onclick = clickHandler; // this way we can have only one handler// Object
{
key: 'string',
num: 1024,
arr: [1, 2, 3],
obj: {naughty: null, nice: true},
func: function () { return true; }
}// JSON
{
"key": "string",
"num": 1024,
"arr": [1, 2, 3],
"obj": {"naughty": null, "nice": true}
}function ajax(url, settings){
var xhr = new XMLHttpRequest();
xhr.onload = function(){
if (xhr.status == 200) {
settings.success(xhr.responseText);
} else {
console.error(xhr.responseText);
}
};
xhr.open(settings.method || 'GET', url, /* async */ true);
xhr.send(settings.data || null);
}
var url = '../../blog/write-html-css-fast/index.html'; // same domain
var callback = function (text) {
console.log(text); // do something with the data
};
ajax(url, {success: callback});; не дават грешки, а се "самооправят"return false или event.preventDefault() то формата няма да се изпрати.thisНаправете функция validate(), която да валидира следната форма:
Ако има невалидно поле, то на страницата трябва да се появи съобщение за грешката и нищо да не се праща до сървъра.
Ако данните са валидни и се опитаме да изпратим формата, тя трябва да се изпрати (post до register.php).
Забележки:
Полезни ресурси:
Използвайки ajax функцията от презентацията (или ваша модификация) искаме да изпращаме ajax request вместо нормалното изпращане на формата.
За целта ще изпратим JSON стринг от типа {"username": "...", "password": "..."}, където сме взели съответните стойности с javascript.
За да се уверите, че всичко работи - напишете си примерен register.php файл, където да разпакетирате данните от JSON към PHP асоциативен масив. След това можете да проверите дали масивът е наред чрез var_dump().
Каква е идеята:
Неща за търсене: