diff --git a/.prettierrc b/.prettierrc index 92cde39..544138b 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,3 +1,3 @@ { "singleQuote": true -} \ No newline at end of file +} diff --git a/numbers/app.js b/numbers/app.js index e69de29..b97b191 100644 --- a/numbers/app.js +++ b/numbers/app.js @@ -0,0 +1,9 @@ +/* eslint-disable import/extensions */ +import getElement from './utils/getElement.js'; +import updateCount from './utils/updateCount.js'; + +const numbers = [...getElement('.number')]; + +numbers.forEach((number) => { + updateCount(number); +}); diff --git a/numbers/utils/getElement.js b/numbers/utils/getElement.js new file mode 100644 index 0000000..464dd7d --- /dev/null +++ b/numbers/utils/getElement.js @@ -0,0 +1,13 @@ +/* eslint-disable comma-dangle */ +const getElement = (selection) => { + const element = document.querySelectorAll(selection); + + if (element) { + return element; + } + throw new Error( + `Please verify selected ("${selection}"), no such element exist!` + ); +}; + +export default getElement; diff --git a/numbers/utils/updateCount.js b/numbers/utils/updateCount.js new file mode 100644 index 0000000..2d4d293 --- /dev/null +++ b/numbers/utils/updateCount.js @@ -0,0 +1,18 @@ +const updateCount = (el) => { + const value = +el.dataset.value; + const increment = Math.ceil(value / 1000); + let initialValue = 0; + + const increaseCount = setInterval(() => { + initialValue += increment; + + if (initialValue > value) { + el.textContent = `${value}+`; + clearInterval(increaseCount); + return; + } + el.textContent = `${initialValue}+`; + }, 1); +}; + +export default updateCount;