let s1 = '1';
let s2 = '2';
console.log(s1 + s2); // '12'
let n1 = 1;
let n2 = 2;
console.log(n1 + n2); // 3
let s1 = '1';
let n2 = 2;
console.log(s1 + n2); // '12'
parseInt()
- в целое числоparseFloat()
- в число с плавающей точкойNumber()
- можно еще так+n2
- или так (это уже своего рода хак, основанный на приведении типов)Number(element1.innerHTML) + Number(element2.innerHTML)
const toggler = document.getElementById('menu-toggle');
const menuLinks = document.querySelectorAll(".menu-link");
for (let el of menuLinks) {
el.addEventListener("click", () => {
toggler.checked = !toggler.checked;
// toggler.checked = false; // или так
});
}
f = () => {
return {
...fields
}
}
f = () => {
...fields
}
f = () => ({
...fields
})
<div class="body">
<button class="button">B1</button>
<div class="content">Content 1</div>
<button class="button">B2</button>
<div class="content">Content 2</div>
<button class="button">B2</button>
<div class="content">Content 2</div>
</div>
определять position относительно блока с position: relavive
<div class="answer-block">
<button class="viewAnswer"> </button>
<button class="closeAnswer"></button>
<div class="answer-comment"> .... </div>
</div>
const answers = document.querySelectorAll('.answer-block');
answers.forEach(answer => {
const open = answer.querySelector('.viewAnswer'),
const close = answer.querySelector('.closeAnswer');
const comment = answer.querySelector('.answer-comment'),
open.addEventListener('click', function(){
comment.style.display = 'block';
open.style.display = 'none';
close.style.display = 'block';
});
close.addEventListener('click', function(){
comment.style.display = 'none';
open.style.display = 'block';
close.style.display = 'none';
});
});
function createApp () { //добавляем содержимое в html-вёрстку
// прочитать список
studentList = JSON.parse(localStorage.getItem("myKey") ?? '[]');
const container = document.querySelector('.conteiner'); // подключаем контейнер
const tableObj = createTable(); // создаем таблицу
container.append(tableObj.table); // добавляем в разметку созданную таблицу
const addBtn = document.querySelector('.add-btn'); // поключаем кнопку
addBtn.addEventListener('click', () => { // навешиваем событие на кнопку, чтобы при клике срабатывала функция
addStudent(studentsList, tableObj.tbody); // функция добавления студента из формы.
// При каждом обновлении сохраняем
localStorage.setItem("myKey",JSON.stringify(studentsList));
});
// А это не надо
// localStorage.setItem("myKey",JSON.stringify(studentsList));
}
function showThumbnail($img, href, title) {
$img.attr('src', href);
$img.attr('alt', title);
}
$(".gallery__list").each(function($gallery){
let $largeImg = $gallery.find('.galleru__item-prem');
$gallery.mouseover(function(event){
let thumbnail = event.target.closest('.galleru__item');
if (!thumbnail) return;
showThumbnail($largeImg, thumbnail.href, thumbnail.title);
});
});
function showThumbnail(img, href, title) {
img.src = href;
img.alt = title;
}
document.querySelectorAll('.gallery__list').forEach(function(gallery){
const largeImg = gallery.querySelector('.galleru__item-prem');
if (!largeImg) console.warn('Нет большой картинки');
gallery.addEventListener('mouseover', function(event){
const thumbnail = event.target.closest('.galleru__item');
if (!thumbnail) return;
showThumbnail(largeImg, thumbnail.href, thumbnail.title);
});
});