Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

217
Visualizações
Event Listener for changing input value by user

I am creating a practice project for measurement conversions. I am trying to have an event listener so whenever the input value is changed, the conversions change. I keep getting an error "answer.addEventListener is not a function" and I cannot figure out how to fix it. How can I fix that problem?

<html>
    <head>
        <link rel="stylesheet" href="index.css">
        <link href="https://fonts.googleapis.com/css2?family=Inter:wght@800&display=swap" rel="stylesheet">
    </head>
    <body>
        
        <div id="top">
            <h1 id="header">Metric/Imperial Unit Conversion</h1>
            <input value="" id="convert" type="number" onchange="calculate()">
        </div>
        <div id="body">
            <h1 id="lengthmeas">Length (Meter/Feet)</h1>
            <h1 id="lengthcalc"></h1>
            <h1 id="volumemeas">Volume (Liters/Gallons)</h1>
            <h1 id="volumecalc"></h1>
            <h1 id="massmeas">Mass (Kilograms/Pounds)</h1>
            <h1 id="masscalc"></h1>
        </div>
        <script src="index.js"></script>
    </body>
</html>
let number = document.querySelector('input')
let lengthcalc = document.getElementById("lengthcalc")
let volumecalc = document.getElementById("volumecalc")
let masscalc = document.getElementById("masscalc")

let answer = number.value
var change = new Event("change")
answer.addEventListener('change', function() {  
  calculate() 
});

function calculate() {
    let feettometers = answer * 3.218
feettometers = feettometers.toFixed(3)
let meterstofeet = answer/3.218
meterstofeet = meterstofeet.toFixed(3);
lengthcalc.textContent = answer + " meters = " + feettometers + " feet | " + answer + " feet = " + meterstofeet + " meters"

let literstogallons = answer / 3.785
literstogallons = literstogallons.toFixed(3)
let gallonstoliters = answer * 3.785
gallonstoliters = gallonstoliters.toFixed(3)
volumecalc.textContent = answer + " liters = " + literstogallons + " gallons | " + answer + " gallons = " + gallonstoliters + " liters"

let kilostopounds = answer * 2.205
kilostopounds = kilostopounds.toFixed(3)
let poundstokilos = answer / 2.205
poundstokilos = poundstokilos.toFixed(3)
masscalc.textContent = answer + " kilograms = " + kilostopounds + " pounds | " + answer + " pounds = " + poundstokilos + " kilograms"
}

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

You did everything right👍, just the problem was that you dont put eventListener to the value of an input, u put it to the input. The below code will work.

let number = document.querySelector('input')
let lengthcalc = document.getElementById("lengthcalc")
let volumecalc = document.getElementById("volumecalc")
let masscalc = document.getElementById("masscalc")

let answer = number.value
var change = new Event("change")
number.addEventListener('change', function() {
  answer = number.value  
  calculate() 
});

function calculate() {
    let feettometers = answer * 3.218
feettometers = feettometers.toFixed(3)
let meterstofeet = answer/3.218
meterstofeet = meterstofeet.toFixed(3);
lengthcalc.textContent = answer + " meters = " + feettometers + " feet | " + answer + " feet = " + meterstofeet + " meters"

let literstogallons = answer / 3.785
literstogallons = literstogallons.toFixed(3)
let gallonstoliters = answer * 3.785
gallonstoliters = gallonstoliters.toFixed(3)
volumecalc.textContent = answer + " liters = " + literstogallons + " gallons | " + answer + " gallons = " + gallonstoliters + " liters"

let kilostopounds = answer * 2.205
kilostopounds = kilostopounds.toFixed(3)
let poundstokilos = answer / 2.205
poundstokilos = poundstokilos.toFixed(3)
masscalc.textContent = answer + " kilograms = " + kilostopounds + " pounds | " + answer + " pounds = " + poundstokilos + " kilograms"
}
<html>
    <head>
        <link rel="stylesheet" href="index.css">
        <link href="https://fonts.googleapis.com/css2?family=Inter:wght@800&display=swap" rel="stylesheet">
    </head>
    <body>
        
        <div id="top">
            <h1 id="header">Metric/Imperial Unit Conversion</h1>
            <input value="" id="convert" type="number" onchange="calculate()">
        </div>
        <div id="body">
            <h1 id="lengthmeas">Length (Meter/Feet)</h1>
            <h1 id="lengthcalc"></h1>
            <h1 id="volumemeas">Volume (Liters/Gallons)</h1>
            <h1 id="volumecalc"></h1>
            <h1 id="massmeas">Mass (Kilograms/Pounds)</h1>
            <h1 id="masscalc"></h1>
        </div>
        <script src="index.js"></script>
    </body>
</html>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda