Object.fromEntries(new FormData(document.querySelector('form')).entries());
что делаю не так?
active
на кнопке? Его у элемента с классом d-n
переключать надо - вместо той ерунды с изменением стилей напрямую. Кстати, а кому вы пытаетесь назначить style.display = 'table-cell'
? Если идти от кнопки parent-parent-next (вместо того, чтобы несколько раз дёргать parentNode, следует использовать метод closest) - это будет (не будет, погуглите, в чём разница между nextSibling
и nextElementSibling
) строка, а не ячейка - так что перенесите-ка класс d-n
на один уровень выше. Зачем создавать каждой кнопке индивидуальный обработчик? Достаточно одного на всех, создавайте его вне цикла. Наконец, у classList.toggle
есть второй параметр, не надо им пренебрегать.document.querySelectorAll('.panel').forEach(n => n.addEventListener('click', onClick));
function onClick() {
const panel = this.closest('tr').nextElementSibling;
const isActive = !panel.classList.contains('active');
panel.classList.toggle('active', isActive);
this.classList.toggle('changing-icon', isActive);
}
document.getElementsByClassName('calculator-block-btn')[0].addEventListener('click', calculateThis);
function calculateThis() {
let inputs = document.querySelectorAll('.calculator-value');
let height = Number(document.getElementById('height').value);
let heightValue = Number(height);
let width = Number(document.getElementById('width').value);
let widthValue = Number(width);
let length = Number(document.getElementById('length').value);
let lengthValue = Number(length);
let amount = (document.getElementById('amount').value);
let amountValue = Number(amount);
let wordsResult = ' шт. бруса';
let wordsSurfaceArea = ' общая площадь, шт';
inputs.forEach((el) => {
if (!el.value) el.classList.add('empty');
else {
el.classList.remove('empty');
}
})
function payment() {
return (1 / ((widthValue * heightValue * lengthValue) / 1000000000)) * amountValue;
}
function surfaceArea() {
return ((heightValue * widthValue * 2) + (heightValue * lengthValue * 2) + (widthValue * lengthValue * 2)) / 1000000;
}
document.getElementById('result').innerHTML = (payment()).toFixed(3) + wordsResult;
document.getElementById('surface-area').innerHTML = (surfaceArea()).toFixed(1) + wordsSurfaceArea;
}