Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[SOLUCIONADO] Aumentando o raio da borda a cada clique.

Olá! Estou tentando criar um programa que aumente o raio da borda de uma div a cada clique sobre a mesma. Já tentei algumas coisas, porém não obtive sucesso. Podem me ajudar? Abaixo deixo trechos de como meu código HTML, CSS e JS se encontram, além de um link para o codePen.

HTML e CSS
<body>
    <div class="container">
        <h1 class="title"></h1>
    </div>

    <style>
        .box {
            background-color: khaki;
            border-radius: 0%;
            height: 200px;
            width: 200px;
            margin-bottom: 2rem;
        }
    </style>

    <script src="./script.js"></script>
</body>
Javacript

// Creates exercise title - IIFE
(function createTitle() {
    const title = document.querySelector('.title');
    title.textContent = '08 - Radius growth';
})();

// Creates some HTML - IIFE
(function createHTML() {
    const markup = `<div class="box"></div>`;
    document.body.insertAdjacentHTML('beforeend', markup);
})();

const box = document.querySelector('.box');

box.addEventListener('click', radiusGrowth);

function radiusGrowth(event) {
    let bRadius = parseInt(event.currentTarget.style.borderRadius + 10);
    event.currentTarget.style.borderRadius = bRadius.toString;
}

Pen do programa

1 resposta
solução!

Leonardo,

O problema é que event.currentTarget.style.borderRadius retorna uma string vazia, então o parseInt acaba retornando NaN (not a number).

Aqui tem um jeito de recuperar o raio atual do elemento (não testei): https://stackoverflow.com/questions/10803023/why-wont-getpropertyvalue-return-a-value-for-the-borderradius-property

Fiz funcionar assim:

let bRadius = 0;
function radiusGrowth(event) {
    bRadius = (bRadius + 10) ;
    event.currentTarget.style.borderRadius = bRadius + "%";
}