JavaScript
4
Вклад в тег
alert(`Hello
World!`);
alert(`Hello\nWorld!`);
let ammountOfMoney = prompt('Write amount of money');
if (!ammountOfMoney || ammountOfMoney < 1000) alert('Invalid input data');
let numberOfYears = prompt('Write number of years');
if (!numberOfYears || numberOfYears < 1) alert('Invalid input data');
let percentageOfYear = prompt('deposit interest?');
if (!percentageOfYear || percentageOfYear > 100) alert('Invalid input data');
alert(`Initial amount: ${ammountOfMoney} \nNumber of years: ${numberOfYears}\nPercentage: ${percentageOfYear}`);
var dropdown = $('.dropdown');
var item = $('.item');
item.on('click', function() {
item.toggleClass('collapse');
if (dropdown.hasClass('dropped')) {
dropdown.toggleClass('dropped');
} else {
setTimeout(function() {
dropdown.toggleClass('dropped');
}, 150);
}
})
const dropdown = $('.dropdown');
dropdown.on('click', function() {
$(this).children(".item").toggleClass('collapse');
if ($(this).hasClass('dropped')) {
$(this).toggleClass('dropped');
} else {
$(this).toggleClass('dropped');
}
})
В чем была ошибка?
Потому что этот код
var dropdown = $('.dropdown'); var item = $('.item');
Содержит все список элементов с такими классами, а здесь:
item.toggleClass('collapse'); if (dropdown.hasClass('dropped')) { dropdown.toggleClass('dropped'); } else { setTimeout(function() { dropdown.toggleClass('dropped'); }, 150); }
При нажатии все элементы из этого списка изменяются. Поэтому нужно использовать $(this) что-бы получить именно тот элемент, который был нажат.
export type TFormFieldsUnion = TFormField<string> | TFormField<boolean> | TFormField<number>
const field1: TFormField<string> = {}
const field2: TFormField<number> = {}
// Array
const fields_a: TFormFieldsUnion[] = [field1, field2]
// Object
const fields_o: { [key: string]: TFormFieldsUnion } = { field1, field2 }
const array = [
{ type: 'type-1', value: 5 },
{ type: 'type-1', value: 7 },
{ type: 'type-2', value: 3 },
{ type: 'type-3', value: 5 },
{ type: 'type-4', value: 5 },
{ type: 'type-1', value: 88 }
];
const result = [];
for (let o of array) {
let obj = result.find(_o => _o.type == o.type);
if (!obj) obj = { type: o.type, data: [] }, result.push(obj);
obj.data.push({ type: o.type, value: o.value });
}
console.log(result);