【发布时间】:2020-11-19 12:40:14
【问题描述】:
我正在尝试使用允许用户选择特定温度单位的下拉列表创建温度转换器。从下拉列表中选择单位时,我希望输入栏发生变化,以便显示相同的单位。选择单元后,前一个单元应向下移动到结果区域。
显示选定的选项和输入栏
显示华氏度的转换
// Listen for submit
document.querySelector('#temp-form').addEventListener('submit', function(e) {
// Hide results
document.querySelector('#results').style.display = 'none';
// Show loader
document.querySelector('#loading').style.display = 'block';
setTimeout(calculateResults, 2000);
e.preventDefault();
});
// Calculate Results
function calculateResults(e){
console.log('Calculating...');
// UI Vars
const fahrenheitInput = document.querySelector('#fahrenheit');
const celsiusInput = document.querySelector('#celsius');
const rankineInput = document.querySelector('#rankine');
const kelvinInput = document.querySelector('#kelvin');
function fahrenheitConversion() {
const ftemp = parseFloat(fahrenheitInput.value);
const ctemp = (ftemp - 32) * (5/9);
const rtemp = ftemp + 459.67;
const ktemp = (ftemp - 32) * (5/9) + 273.15;
celsiusInput.value = ctemp.toFixed(2);
rankineInput.value = rtemp.toFixed(2);
kelvinInput.value = ktemp.toFixed(2);
}
// function celsiusConversion() {
// const ctemp = parseFloat(celsiusInput.value);
// const ftemp = (ctemp * (9/5)) + 32;
// const rtemp = (ctemp * (9/5)) + 491.67;
// const ktemp = ctemp + 273.15;
// fahrenheitInput.value = ftemp.toFixed(2);
// rankineInput.value = rtemp.toFixed(2);
// kelvinInput.value = ktemp.toFixed(2);
// }
// function rankineConversion() {
// const rtemp = parseFloat(rankineInput.value);
// const ctemp = (rtemp - 491.67) * (5/9);
// const ftemp = rtemp - 459.67;
// const ktemp = rtemp * (5/9);
// celsiusInput.value = ctemp.toFixed(2);
// fahrenheitInput.value = ftemp.toFixed(2);
// kelvinInput.value = ktemp.toFixed(2);
// }
// function kelvinConversion() {
// const ktemp = parseFloat(kelvinInput.value);
// const ctemp = ktemp - 273.15;
// const rtemp = ktemp * (9/5);
// const ftemp = (ktemp - 273.15) * (9/5) + 32;
// celsiusInput.value = ctemp.toFixed(2);
// rankineInput.value = rtemp.toFixed(2);
// fahrenheitInput.value = ftemp.toFixed(2);
// }
// Show results
document.querySelector('#results').style.display = 'block';
// Hide loader
document.querySelector('#loading').style.display = 'none';
fahrenheitInput.addEventListener('submit', fahrenheitConversion());
// celsiusInput.addEventListener('submit', celsiusConversion());
// rankineInput.addEventListener('submit', rankineConversion());
// kelvinInput.addEventListener('submit', kelvinConversion());
}
<body class="bg-light">
<div class="container">
<div class="row">
<div class="col-md-6 mx-auto">
<div class="card card-body text-center mt-5">
<h1 class="heading display-5 pb-3">Temperature Converter</h1>
<form id="temp-form">
<div class="form-group">
<label>Select Temperature Unit</label>
<select name="" id="units" class="form-control">
<option value="ftemp" class="fval">Fahrenheit</option>
<option value="ctemp" class="cval">Celsius</option>
<option value="rtemp" class="rval">Rankine</option>
<option value="ktemp" class="kval">Kelvin</option>
</select>
</div>
<div class="form-group transform">
<div class="input-group-prepend">
<span class="input-group-text">°F</span>
<input type="number" class="form-control" id="fahrenheit" placeholder="Degrees Fahrenheit">
</div>
</div>
<div class="form-group">
<input type="submit" value="Calculate" class="btn btn-dark btn-block">
</div>
</form>
<!-- LOADER -->
<div id="loading">
<img src="img/loading.gif" alt="">
</div>
<!-- RESULTS -->
<div id="results" class="pt-4">
<h5>Results</h5>
<div class="form-group">
<div class="input-group-prepend">
<span class="input-group-text">°C</span>
<input type="number" class="form-control" id="celsius" placeholder="Degrees Celsius" disabled>
</div>
</div>
<div class="form-group">
<div class="input-group-prepend">
<span class="input-group-text">°R</span>
<input type="number" class="form-control" id="rankine" placeholder="Degrees Rankine" disabled>
</div>
</div>
<div class="form-group">
<div class="input-group-prepend">
<span class="input-group-text">K</span>
<input type="number" class="form-control" id="kelvin" placeholder="Kelvin" disabled>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Option 1: jQuery and Bootstrap Bundle (includes Popper) -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script>
<script src="app.js"></script>
</body>
【问题讨论】:
-
你的意思是当用户从下拉框中选择一个单元时,其他单元会转到结果区域?如果是这样,帖子标题可能会产生误导。
标签: javascript html