摄氏到华氏的转换-JavaScript
我正在制作塞尔修斯到法伦海特的计算器。我的密码笔在这里: 我试图这样做,如果celcius输入处于活动状态,则会调用convert to farenheit函数,反之亦然,并且只有在单击submit按钮时才会发生转换。 我还为活动表单id尝试了if/else语句,但该语句不起作用 代码如下: HTML: 我写这个只是为了你的演示摄氏到华氏的转换-JavaScript,javascript,Javascript,我正在制作塞尔修斯到法伦海特的计算器。我的密码笔在这里: 我试图这样做,如果celcius输入处于活动状态,则会调用convert to farenheit函数,反之亦然,并且只有在单击submit按钮时才会发生转换。 我还为活动表单id尝试了if/else语句,但该语句不起作用 代码如下: HTML: 我写这个只是为了你的演示 function getElm(id){ return document.getElementById(id); } function readValue(id)
function getElm(id){
return document.getElementById(id);
}
function readValue(id){
return getElm(id).value;
}
function updateHtml(text,id){
getElm(id).innerHTML = text;
}
function convertCToF(c) {
var f = c * (9 / 5) + 32;
return f;
}
function convertFToC(f) {
var c = (f - 32) * 5 / 9;
return c;
}
function sequnce(){
var val = readValue(activeId);
var convertedVal = activeFn(val);
updateHtml("Result: "+ convertedVal + activeSuffix,'result')
}
var activeFn = convertCToF;
var activeId = 'cInput';
var activeSuffix = "℉"
getElm('cInput').onfocus = function(){
activeFn = convertCToF;
activeId = 'cInput';
activeSuffix = "℉"
}
getElm('fInput').onfocus = function(){
activeFn = convertCToF;
activeId = 'fInput';
activeSuffix = "℃"
}
getElm("cInput").oninput = sequnce;
getElm("fInput").oninput = sequnce;
getElm("submit").oninput = sequnce;
我已经更正了您的评论,并指出了改进的地方、原因和内容,但似乎有人删除了我的评论。由于还没有一个具体的答案,我将把它转移到这里
如果不希望即时更新,请删除以下两行:
document.getElementById("cInput").oninput = function() {convertCToF()};
document.getElementById("fInput").oninput = function() {convertFToC()};
而是根据最后使用的输入框决定脚本将运行的转换模式
var conversionFn;
document.querySelector('#cInput').onfocus = function(){
conversionFn = convertCToF;
};
document.querySelector('#fInput').onfocus = function(){
conversionFn = convertFToC;
};
注意:在您的转换函数中,以下行是无用的,请删除它们
c = parseInt(c);
f = parseInt(f);
在表达式中使用时,变量将被强制转换为适当的值-如果希望显式,则应在使用值执行计算之前进行此转换
»另请参见:作为这方面的另一个示例
接下来为按钮设置一个监听器,请注意,您不能简单地将conversionFn附加到事件处理程序本身,因为这将立即分配一个不变的引用或未定义的引用,这是没有用的-相反,将变量封装在新函数闭包的作用域中
document.querySelector('#submit').onclick = function(){
conversionFn();
};
请改用这些函数
function getFahrenheitFromCelsius(celsius){
return (celsius * (9 / 5)) + 32;
}
function getCelsiusFromFahrenheit(fahrenheit){
return (fahrenheit - 32) * (5 / 9);
}
问题是,当您单击“提交”时,两个输入字段都失去焦点,而按钮处于活动状态。你需要听每个输入的onfocus,并记下最后点击的是哪个输入。我已经改变了问题来解释这一点。谢谢:
document.querySelector('#submit').onclick = function(){
conversionFn();
};
function getFahrenheitFromCelsius(celsius){
return (celsius * (9 / 5)) + 32;
}
function getCelsiusFromFahrenheit(fahrenheit){
return (fahrenheit - 32) * (5 / 9);
}