为什么 Javascript 不读取我的输入值? [关闭]

问题描述 投票:0回答:1

我正在尝试制作公制/英制单位转换器,但我不确定为什么我的输入值未定义,而转换后的值显示为 Nan。我怎样才能解决这个问题? 以下是我的 HTML 代码:

el="stylesheet" href="index.css">
    </head>
    <body>
        <div class="container">
            <div class="section-1">
        <h1 id="heading">Metric/Imperial Unit Conversion</h1>
        <input id="input-value"type="number" />
        <br/>
        <button id="convert-btn">Convert</button>
        <br/>
        
        <div class="conversions">
            
            <!-- length -->
        <div id="length-box">
           <h3 id="length-text">Length(Meter/Feet)</h3> 
           <p id="length-value"></p>
        </div>
        
         <!-- volume -->
        <div id="volume-box">
            <h3 id="volume-text">Volume(Liters/Gallons)</h3> 
            <p id="volume-value"></p>
        </div>
        
         <!-- mass -->
        <div id="mass-box">
            <h3 id="mass-text">Mass(Kilograms/Pounds)</h3> 
            <p id="mass-value"> </p>
        </div>
        </div>
        
        </div>
        <script src="index.js"></script>
    </body>
</html>

JavaScript代码:

const convertBtn = document.getElementById("convert-btn")
let inputVal     = document.getElementById("input-value")
let lengthValue  = document.getElementById("length-value")
let volumeValue  = document.getElementById("volume-value")
let massValue    = document.getElementById("mass-value")
let isAlive      = false

let feet       = inputVal * 3.281
let theFeet    = feet.toFixed(3)
let meters     = inputVal / 3.281
let theMeters  = meters.toFixed(3)

let liters     = inputVal * 0.264
let theLiters  = liters.toFixed(3)
let gallons    = inputVal / 0.264
let theGallons = gallons.toFixed(3)

let kilos      = inputVal * 2.204
let theKilos   = kilos.toFixed(3)
let pounds     = inputVal / 2.204
let thePounds  = pounds.toFixed(3)

if (isAlive === false) 
  {
  lengthValue.innerHTML = `0 meters= 0 feet |0 feet=0 meters`
  volumeValue.innerHTML = `0 liters= 0 gallons | 0 gallons= 0 liters`
  massValue.innerHTML   = `0 kilos= 0 pounds | 0 pounds=0liters`
  } 
else if (isAlive === true) 
  {
  converter()
  }

convertBtn.addEventListener('click', function converter(inputVal) 
  {
  inputVal                = console.log(inputVal.value)
  isAlive                 = true
  lengthValue.textContent = `${inputVal} meters= ${theFeet} feet | ${inputVal} feet=${theMeters } meters`
  volumeValue.innerHTML   = `${inputVal} liters= ${theLiters} gallons | ${inputVal} gallons=${theGallons } liters`
  massValue.innerHTML     = `${inputVal} kilos= ${theKilos} pounds | ${inputVal} pounds=${thePounds } liters`
  })

我试图将输入值保存到 localStorage ,但是当我安慰 inputVal 时,它给了我强输入 Val

javascript input undefined return-value
1个回答
0
投票

我删除了之前的console.log,还需要DOM元素inputVal的值。最后我将 inputVal 作为函数的参数。 Javascript 代码解决方案:

const convertBtn= document.getElementById("convert-btn")
    let inputVal= document.getElementById("input-value")
    let lengthValue=document.getElementById("length-value")
    let volumeValue= document.getElementById("volume-value")
    let massValue= document.getElementById("mass-value")
    let isAlive=false
    
     let metersToFeet=3.281
      let theMeters=metersToFeet.toFixed(3)
      
    //VOLUME SECTION  //////////////////////// //////////////////////////////////////////////////
    let liters=0.264
    let theLiters= liters.toFixed(3)
    // MASS  SECTION////////////////////////////////////////////////////////////////////////////
    let kilos= 2.204
    let theKilos= kilos.toFixed(3)
    
    
    
    
    
    
    // ////////////////////////////////////////////////////////////////////////
    if(isAlive===false){
    lengthValue.innerHTML=`0 meters= 0 feet |0 feet=0 meters`
    
    volumeValue.innerHTML=`0 liters= 0 gallons | 0 gallons= 0 liters`
    
    massValue.innerHTML=`0 kilos= 0 pounds | 0 pounds=0liters`
    }
    else if(isAlive === true){
     converter()   
        
    }
    
    
    
    // ////////////////////////////////////////////////////////////////////////////////////////////////
    // /DISPLAY RESULTS/////////////////////////////////////////////////////////////////////////////////
    convertBtn.addEventListener('click',function converter(){
    let input=inputVal.value
      isAlive=true  
      
    lengthValue.textContent=`${input} meters= ${input * theMeters} feet | ${input} feet=${input/ theMeters} meters`
    
    volumeValue.innerHTML=`${input} liters= ${input * theLiters} gallons | ${input} gallons=${input/theLiters} liters`
    
    massValue.innerHTML=`${input} kilos= ${input * theKilos} pounds | ${input} pounds=${input/theKilos} liters`
    })
© www.soinside.com 2019 - 2024. All rights reserved.