How can I change a value of css property with a button click

I am trying to changing the value of border radius of a figure. When I click the button, the values of inputs have to change the values already set in the property, but I don't know how to set these values in CSS properties.

I tried to set selecting using document.getElementByClassName and attributing the input value, but it doesn't work.

class CaixaPrevisora {
  constructor(valor) {
    this.formulario = document.querySelector('.formulario')
    this.valor = valor;
    this.eventos();
  }
  eventos() {
    this.formulario.addEventListener('submit', e => {
      this.handleSubmit(e);
    });
  }
  handleSubmit(e) {
    e.preventDefault();
    const camposValidos = this.camposSaoValidos();
    var retangulo = document.getElementsByClassName('retangulo')
    if (camposValidos) {
      retangulo.style.width = direitacima
    }

  }
  camposSaoValidos() {
    let valid = true;

    for (let errorText of this.formulario.querySelectorAll('.error-text')) {
      errorText.remove();
    }

    for (let campo of this.formulario.querySelectorAll('.validos')) {
      const label = campo.previousElementSibling.innerHTML;
      if (!campo.value) {
        this.criaErro(campo, `${label} não pode estar em branco`);
        valid = false;
      }
      if (campo.classList.contains('direitacima')) {
        if (!this.validaDireitaCima(campo)) valid = false;
      }
      if (campo.classList.contains('esquerdacima')) {
        if (!this.validaDireitaCima(campo)) valid = false;
      }
      if (campo.classList.contains('direitabaixo')) {
        if (!this.validaDireitaCima(campo)) valid = false;
      }
      if (campo.classList.contains('esquerdabaixo')) {
        if (!this.validaDireitaCima(campo)) valid = false;
      }
    }
    return valid;
  }
  validaDireitaCima(campo) {
    let valid = true;
    const direitaCima = campo.value;
    if (!direitaCima < 0) {
      this.criaErro(campo, 'O campo não pode estar negativo')
      valid = false;
    }
    return valid;
  }
  validaEsquerdaCima(campo) {
    let valid = true;
    const esquerdaCima = campo.value;
    if (!esquerdaCima < 0) {
      this.criaErro(campo, 'O campo não pode estar negativo')
      valid = false;
    }
    return valid;
  }
  validaDireitaBaixo(campo) {
    let valid = true;
    const direitaBaixo = campo.value;
    if (!direitaBaixo < 0) {
      this.criaErro(campo, 'O campo não pode estar negativo')
      valid = false;
    }
    return valid;
  }
  validaEsquerdaBaixo(campo) {
    let valid = true;
    const esquerdaBaixo = campo.value;
    if (!esquerdaBaixo < 0) {
      this.criaErro(campo, 'O campo não pode estar negativo')
      valid = false;
    }
    return valid;
  }
  criaErro(campo, msg) {
    const div = document.createElement('div');
    div.innerHTML = msg;
    div.classList.add('error-text');
    campo.insertAdjacentElement('afterend', div);

  }
}

const novo = new CaixaPrevisora();
<section class="limite">
  <form action="/" method="POST" class="formulario">
    <h4>Entre com as medidas para arredondar os vértices</h2>
      <label>Vertice Superior Direito</label>
      <input type="text" id="bordaDireita" class="direitacima validos">
      <label>Vértice Superior Esquerdo</label>
      <input type="text" id="bordaEsquerda" class="esquerdacima validos">
      <label>Vértice Inferior Direito</label>
      <input type="text" id="bordaDireitaCima" class="direitabaixo validos">
      <label>Vértice Inferior Esquerdo</label>
      <input type="text" id="bordaEsquerdaBaixo" class="esquerdabaixo validos">
      <button type="submit" id="modificar">Aplicar</button>
  </form>
  <section class="retangulo" id="modificacao"></section>
</section>

Upvotes: 0

Views: 202

Answers (2)

MB_
MB_

Reputation: 1747

Try this

  handleSubmit(e) {
    e.preventDefault();
    const camposValidos = this.camposSaoValidos();
    var retangulo = document.getElementById("modificacao");
    var borderRightTop = document.getElementById('bordaDireita').value;    // here
    // Do same for others
    // var borderLeftTop = ...
    // var borderLeftBottom = ...
    if (camposValidos) {
      retangulo.style.borderTopRightRadius = borderRightTop + 'px'         // here
    }
  }

Try my demo + largura & altura :

class CaixaPrevisora {
  constructor(valor) {
    this.formulario = document.querySelector(".formulario");
    this.valor = valor;
    this.eventos();
  }
  eventos() {
    this.formulario.addEventListener("submit", e => {
      this.handleSubmit(e);
    });
  }
  handleSubmit(e) {
    e.preventDefault();
    const camposValidos = this.camposSaoValidos();
    var retangulo = document.getElementById("modificacao");
    var width = document.getElementById('largura').value
    var height = document.getElementById('altura').value
    var borderRightTop = document.getElementById('bordaDireita').value;
    var borderLeftTop = document.getElementById('bordaEsquerda').value;
    var borderRightBottom = document.getElementById('bordaDireitaCima').value;
    var borderLeftBottom = document.getElementById('bordaEsquerdaBaixo').value;
    if (camposValidos) {
      retangulo.style.width = width + 'px';
      retangulo.style.height = height + 'px';
      retangulo.style.borderTopRightRadius = borderRightTop + 'px'
      retangulo.style.borderTopLeftRadius = borderLeftTop + 'px'
      retangulo.style.borderBottomRightRadius = borderRightBottom + 'px'
      retangulo.style.borderBottomLeftRadius = borderLeftBottom + 'px'
    }
  }
  camposSaoValidos() {
    let valid = true;

    for (let errorText of this.formulario.querySelectorAll(".error-text")) {
      errorText.remove();
    }

    for (let campo of this.formulario.querySelectorAll(".validos")) {
      const label = campo.previousElementSibling.innerHTML;
      if (!campo.value) {
        this.criaErro(campo, `${label} não pode estar em branco`);
        valid = false;
      }
      if (campo.classList.contains("direitacima")) {
        if (!this.validaDireitaCima(campo)) valid = false;
      }
      if (campo.classList.contains("esquerdacima")) {
        if (!this.validaDireitaCima(campo)) valid = false;
      }
      if (campo.classList.contains("direitabaixo")) {
        if (!this.validaDireitaCima(campo)) valid = false;
      }
      if (campo.classList.contains("esquerdabaixo")) {
        if (!this.validaDireitaCima(campo)) valid = false;
      }
    }
    return valid;
  }
  validaDireitaCima(campo) {
    let valid = true;
    const direitaCima = campo.value;
    if (!direitaCima < 0) {
      this.criaErro(campo, "O campo não pode estar negativo");
      valid = false;
    }
    return valid;
  }
  validaEsquerdaCima(campo) {
    let valid = true;
    const esquerdaCima = campo.value;
    if (!esquerdaCima < 0) {
      this.criaErro(campo, "O campo não pode estar negativo");
      valid = false;
    }
    return valid;
  }
  validaDireitaBaixo(campo) {
    let valid = true;
    const direitaBaixo = campo.value;
    if (!direitaBaixo < 0) {
      this.criaErro(campo, "O campo não pode estar negativo");
      valid = false;
    }
    return valid;
  }
  validaEsquerdaBaixo(campo) {
    let valid = true;
    const esquerdaBaixo = campo.value;
    if (!esquerdaBaixo < 0) {
      this.criaErro(campo, "O campo não pode estar negativo");
      valid = false;
    }
    return valid;
  }
  criaErro(campo, msg) {
    const div = document.createElement("div");
    div.innerHTML = msg;
    div.classList.add("error-text");
    campo.insertAdjacentElement("afterend", div);
  }
}

const novo = new CaixaPrevisora();
.error-text {
  color: red;
}

.retangulo {
  background: #6600FF;
}
<section class="limite">
  <form action="/" method="POST" class="formulario">
    <h4>Entre com as medidas para arredondar os vértices</h4>
    <br />
    <label>Largura</label>
    <input type="text" id="largura" class="largura validos">
    <br />
    <label>Altura</label>
    <input type="text" id="altura" class="altura validos">
    <br />
    <label>Vertice Superior Direito</label>
    <input type="text" id="bordaDireita" class="direitacima validos">
    <br />
    <label>Vértice Superior Esquerdo</label>
    <input type="text" id="bordaEsquerda" class="esquerdacima validos">
    <br />
    <label>Vértice Inferior Direito</label>
    <input type="text" id="bordaDireitaCima" class="direitabaixo validos">
    <br />
    <label>Vértice Inferior Esquerdo</label>
    <input type="text" id="bordaEsquerdaBaixo" class="esquerdabaixo validos">
    <br />
    <button type="submit" id="modificar">Aplicar</button>
  </form>
  <section class="retangulo" id="modificacao"></section>
</section>

Upvotes: 1

Marco
Marco

Reputation: 644

In the handleSubmit function (I'm assuming that the issue is there) you're referring to direitacima, but you're not actually declaring it as a variable.

You can do that by writing something like:

var direitacima = document.querySelector('.direitacima').value

You should also be aware that document.getElementsByClassName returns multiple items, so you can't just set style on it (like with retangulo.style.width). You can add [0] after retangulo, or use querySelector('.retangulo'), which would only return one item.

Upvotes: 1

Related Questions