for (character of str) { /* ... */ }
.global-box
, в нём найти все .items
, сосчитать их.hidden
всем, начиная с 4-го; показать кнопку .all-show
. Повесить на кнопку слушатель события нажатия, в котором убрать класс hidden у всех items и спрятать кнопку.hidden
только кнопке.<html><head><!-- ... --></head><body>
<section id="when-is-open">
<!-- тут бесценное содержание, когда можно -->
</section>
<section id="when-is-closed" class="hidden">
<!-- тут предложение заглянуть строго в правильное время -->
</section>
</body>
CSS класс "hidden" должен прятать display: none
Так по умолчанию, если скрипты не работают, видна нормальная страница (в т.ч. поисковикам).Element.classList.add("hidden")
, Element.classList.remove("hidden")
.const recursiveSum = x => {
if (x.toString() === '[object Object]') {
const values = Object.values(x);
return values.reduce((acc, v) => acc + recursiveSum(v), 0);
}
const n = Number(x);
return Number.isNaN(n) ? 0 : n;
};
recursiveSum(obj) // 45
Так можно обработать объект любой глубины вложенности и с любыми значениями
С каждой легко разобраться по отдельности.
Самыми сложными тут, может, покажутся два момента:
(c, i) => c.repeat(i)
map()
, если ещё не касались этой темы