×
Clear all filters including search bar
Valeri Tandilashvili's JavaScript Notes
document.addEventListener('click', func);
function func() {
alert('You clicked me!');
}
Using anonymous function:document.addEventListener('click', function() {
alert('You clicked me!');
});
Another built-in function foreach
that receives a function as an argumentlet greatColors = ['green', 'orange', 'yellow'];
greatColors.forEach(listColors);
function listColors(color) {
document.write('The color ' + color + ' is a great color<br>');
}
Higher order function
function doubleMe(number) {
return 2*number;
}
function tripleMe(number) {
return 3*number;
}
function quadrupleMe(number) {
return 4*number;
}
document.write(doubleMe(10));
document.write(tripleMe(10));
document.write(quadrupleMe(10));
Creates the same multiplier functions using Higher order function
In this case we only need to create one function instead of 3 multiplier functionsfunction multiplier(multiply) {
return function(number){
return number*multiply;
};
}
let double = multiplier(2);
let triple = multiplier(3);
let quadruple = multiplier(4);
document.write(double(10));
document.write(triple(10));
document.write(quadruple(10));
click
event listener for two functions: func1
, func2
to document object.
After clicking three times we remove the event listener for func1
functionlet counter = 0;
document.addEventListener('click', func1);
document.addEventListener('click', func2);
function func1(){
console.log('You clicked me!');
if (counter>2) {
console.log('Max limit is 3');
document.removeEventListener('click', func1);
}
}
function func2(){
counter ++;
console.log('counter: '+counter);
}
filter
, map
together.
Uses onlyMen
and underTwenty
methods for filtering the result.
Uses onlyNames
function to take only names from the objects.let people = [
{name: 'გიორგი', age: 15, gender: 'male'},
{name: 'ეკატერინე', age: 35, gender: 'female'},
{name: 'დავითი', age: 75, gender: 'male'},
{name: 'ნინო', age: 18, gender: 'female'},
{name: 'თორნიკე', age: 11, gender: 'male'}
]
function onlyMen(human) {
return human.gender == 'male'
}
function underTwenty(human) {
return human.age < 20
}
function onlyNames(human) {
return human.name
}
let onlyBoysNames = people.filter(onlyMen).filter(underTwenty).map(onlyNames)
document.write(onlyBoysNames)
input[type=text]
, select
) value
jQuerylet value = $("#element_id").val();
JSlet value = document.getElementById('element_id').value;'
Set value 5
to the specified element (input[type=text]
, select
) value
jQuery$("#element_id").val(5);
JSlet value = document.getElementById('element_id').value = 5;'
Check if the specified checkbox is checked
jQuerylet is_checked = $("#element_id").is(":checked");
JSlet is_checked = document.getElementById('element_id').checked
Get HTML content of the specified element by element id
jQuerylet content = $("#element_id").html();
JSlet content =
document.getElementById('element_id').innerHTML
Set HTML content to the specified element by element id
jQuery$("#element_id").html('some html');
JSdocument.getElementById('element_id').innerHTML = 'some html'
Get attribute placeholder
value of the element
jQuery$('#element_id').attr('placeholder');
JSdocument.getElementById('element_id').getAttribute('placeholder');
Set attribute placeholder
value to the specified element
jQuery$('#element_id').attr('placeholder', 'new placeholder');
JSdocument.getElementById('element_id').placeholder = 'new placeholder';
Toggle class for an element
jQuery$("#element_id").toggle();
JSdocument.getElementById('element_id').classList.toggle("hide");
CSS class.hide {
display: none !important;
}
Get selected radio
value
jQuerylet result = jQuery('input:radio[name=vote]:checked').val();
JSlet result = document.querySelector('input[name=vote]:checked').value;
Find i
element inside another element with id element_id
jQuerylet icon = $("#element_id").find('i');
JSdocument.getElementById('element_id').querySelector('i');
Get data-value
attribute of datalist
element using selected text (datalist option's value
attribute)
jQuery$('#datalist_id [value="selected text"]').data('value');
JSdocument.querySelector('#datalist_id option[value="selected text"]').getAttribute('data-value')
Toggle two class for an element
jQuerylet el = $('#element')
if(el.hasClass('arrow-down')) {
el.removeClass('arrow-down');
el.addClass('arrow-up');
} else {
el.addClass('arrow-down');
el.removeClass('arrow-up');
}
JSlet el = document.getElementById('element')
if (el.classList.contains('arrow-up')) {
el.classList.remove('arrow-up');
el.classList.add('arrow-down');
} else {
el.classList.add('arrow-up');
el.classList.remove('arrow-down');
}
Ajax request
jQuery$.ajax({
url:'demo_get.asp',
success:function(sms){
$('#demo').html(sms);
}
});
JSvar xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
MouseOver event
jQuery$('#element').on('mouseover', function(){
console.log('mouse over');
});
JSdocument.getElementById('element').addEventListener('mouseover', function(){
console.log('mouse over');
});
Scroll animation down to the specified element's position in 500 ms
jQuery$('html, body').animate({scrollTop:($('#element').position().top)}, 400);
JSfunction scrollDownToElement(el) {
// Milliseconds per move
let pm = 50;
// Padding from top
let mft = 150;
// Total animation milliseconds
let scroll_ms = 500;
// Calculates target element top position
let bd_pos = document.body.getBoundingClientRect();
let el_pos = document.getElementById(el).getBoundingClientRect();
let height = el_pos.top-bd_pos.top-mft;
// Calculates per move px
let spm = height / (scroll_ms / pm);
// The animation counter to stop
let spmc = 1;
let scroll_timer = setInterval(function() {
// Moves down by {spm} px
window.scrollBy(0, spm);
spmc++;
// Stops the animation after enough iterations
if (spmc > (scroll_ms / pm)) {
clearInterval(scroll_timer);
}
}, pm);
}
scrollDownToElement('element');
let numbers = [10, 100, 1000]
let doubled = numbers.map(function(x){
return x * 2
})
document.write(doubled)
Alternative arrow function:let doubled = numbers.map((x) => { return x * 2 })
If it's only a single line we don't need curly brackets and the keyword return
let doubled = numbers.map((x) => x * 2);
If the arrow function has only one parameter, it does not need parentheses:let doubled = numbers.map(x => x * 2);
Note: We only need parentheses
if we had zero or more than one parametersthis
inside driveCar()
function refers to the global window object.
Global variables firstName
and lastName
are added to the window
object.
That is why they are visible using the keywordfirstName = "Jack"
lastName = "Ma"
function driveCar() {
document.write(this.firstName + ' ' + this.lastName + ' is driving a car<br/>')
}
driveCar()
If we call the same function using call
function, this
will refer to the object that will be passed.
In this case: john
objectlet john = {
firstName: 'John',
lastName: 'Doe'
}
function driveCar() {
document.write(this.firstName + ' ' + this.lastName + ' is driving a car<br/>')
}
driveCar.call(john)
true
but in PHP it evaluates to false
if ("0") {
}
let
uses block scopelet myNumber = 1
function callMePlease() {
let myNumber = 2
if (1 == 1) {
let myNumber = 3
document.write('My number is: ' + myNumber + '</br>')
}
document.write('My number is: ' + myNumber + '</br>')
}
document.write('My number is: ' + myNumber + '</br>')
callMePlease()
childNodes
returns an array of an element's child nodes.
element.firstChild
returns the first child node of an element.
element.lastChild
returns the last child node of an element.
element.hasChildNodes
returns true if an element has any child nodes, otherwise false.
element.nextSibling
returns the next node at the same tree level.
element.previousSibling
returns the previous node at the same tree level.
element.parentNode
returns the parent node of an element.