Установите значение для входа с помощью Javascript - PullRequest
0 голосов
/ 04 февраля 2020

Я знаю, что таких вопросов много, но после долгого чтения и просмотра моего кода я не понимаю, что я делаю неправильно. Я добавил addEventListener с целью не помещать «onclick» в мой html и обнаруживать изменения, но во время отображения значения, полученного в моем входе, ничего не отображается, и я не знаю почему, я подозреваю, что Вы не вводите ни одну из функций для преобразования. Мой код:

<div class="box-numero-decimal">
  <h1>CONVERSOR DECIMAL</h1>
    <div class="input-numero">
      <input type="text" id="decimal" class="i-enable n-f">
    </div>
    <div class="box-boton">
      <div class="row">
        <div class="col-6 d-flex align-items-center">
          <label class="m-0" for="decimal">Ingrese el valor <b>decimal</b></label>
        </div>
        <div class="col-6">
          <button class="btn-style float-right n-f">calcular</button>
        </div>
      </div>                                    
    </div>
  </div>
  <div class="box-centrar">
     <div class="box-conversor-gral">
       <label class="etiqueta-max" for="r-binario">Binario</label>
       <input type="text" id="binario" class="i-disabled field left n-f" value="">
       <label class="etiqueta-max" for="r-octal">Octal</label>
       <input type="text" id="octal"class="i-disabled field left n-f" readonly value="">
       <label class="etiqueta-max" for="r-hexadecimal">Hexadecimal</label>
       <input type="text" id="hexadecimal"  class="i-disabled field left n-f" readonly value="">
      </div>
    </div>

Сценарий:

const decimalCon = {
    binario : '0',
    octal : '0',
    hexadecimal : '0',
    bandera : false,
};

var sumbitInput = document.getElementById('box-boton');
var binarioR = document.getElementById('binario');
var octalR = document.getElementById('octal');
var hexadecimalR = document.getElementById('hexadecimal');

if(sumbitInput){
    sumbitInput.addEventListener("click", actualizar);
    sumbitInput.addEventListener("change", actualizar);
}

function actualizar(){
    const decimal = Number(document.getElementById('decimal').value);
    if (decimal !== 0){
        binarioR.value = convertirBinario(decimal);
        octalR.value = convertirOctal(decimal);
        hexadecimalR.value = convertirHexadecimal(decimal);
    }
}

//Decimal a Binario
function convertirBinario(n){
    let dividendo = n;
    let binario = '';
    while (dividendo != 0){
        binario = (dividendo % 2) + binario;
        dividendo = Math.floor(dividendo/2);

    }
    decimalCon.binario = binario;
}

1 Ответ

1 голос
/ 04 февраля 2020

измените этот код:

var sumbitInput = document.getElementById('box-boton');

на этот:

var sumbitInput = document.querySelector('.box-boton');

, и функция converttirBinario должна вернуть результат, поэтому для него необходимо вернуть значение:

function convertirBinario(n){
        let dividendo = n;
        let binario = '';
        while (dividendo !== 0){
            binario = (dividendo % 2) + binario;
            dividendo = Math.floor(dividendo/2);

        }
       // decimalCon.binario = binario;
        return binario;
    }

Вы также упомянули функции, которые не существуют. В любом случае функция converttirBinario будет работать с применением вышеуказанных изменений.

...