我的JavaScript代码缺少什么?
我是JavaScript新手,在尝试创建下拉列表单元转换器时遇到问题。该项目要求代码将英里转换为英尺,将摄氏度转换为华氏度,将磅转换为克。问题是当我输入这些值时,输出就偏离了方向 无论我输入什么数字或选择什么单位,我都会得到相同的结果14514.944,而不是相应的结果(5280英尺、33.8°、453.592g等)。如果我双击submit按钮,我会得到62573043513.9154,三次单击26974853408668000,以此类推 我知道我在convert_unit函数中遗漏了一些东西,但我不确定是什么。我尝试过添加和删除各种代码,但没有任何效果我的JavaScript代码缺少什么?,javascript,html,Javascript,Html,我是JavaScript新手,在尝试创建下拉列表单元转换器时遇到问题。该项目要求代码将英里转换为英尺,将摄氏度转换为华氏度,将磅转换为克。问题是当我输入这些值时,输出就偏离了方向 无论我输入什么数字或选择什么单位,我都会得到相同的结果14514.944,而不是相应的结果(5280英尺、33.8°、453.592g等)。如果我双击submit按钮,我会得到62573043513.9154,三次单击26974853408668000,以此类推 我知道我在convert_unit函数中遗漏了一些东西,
var numInput=document.getElementById(“numInput”);
var numInput=document.getElementById(“numOutput”);
var feets=document.getElementById(“feets”);
var fahrenheit=document.getElementById(“华氏”);
var grams=document.getElementById(“grams”);
函数转换单元(){
numOutput.value=(5280*numInput.value);
var x=document.getElementById(“英尺”).label;
document.getElementById(“enter”).innerHTML=x;
document.getElementById(“结果”).innerHTML=x;
numOutput.value=(1.8*numInput.value)+32
var x=document.getElementById(“华氏”)标签;
document.getElementById(“enter”).innerHTML=x;
document.getElementById(“结果”).innerHTML=x;
numOutput.value=(453.592*numInput.value)
var x=document.getElementById(“grams”).label;
document.getElementById(“enter”).innerHTML=x;
document.getElementById(“结果”).innerHTML=x;
}
数值
转换菜单
英里到英尺
塞尔修斯到华氏度
磅对克
转换
结果
两个变量都命名为numInput
:
var numInput = document.getElementById("numInput");
var numInput = document.getElementById("numOutput");
我猜你的第二个应该是
numOutput
。此外,除非您想明确知道这些变量是什么,否则不需要在JS中重新定义它们。具有ID的HTML元素已经基于其ID名称在全局范围内可用(有一些警告)。在这种情况下,您只需在整个程序中使用numInput
和numOutput
,即使没有这两行代码,它仍然可以工作。我在您的代码中发现了两个问题
第一个是在脚本的第4行中,用“numOutput”元素覆盖变量“numInput”的输入。(重命名为“numOutput”)
第二个问题是,当脚本加载到页面上时,元素尚未实例化。要解决这个问题,您可以将导入标记放在
前面,或者在函数中添加变量定义
注意:不要忘记在每个语句后使用分号
上帝保佑=)
index.html
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title></title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<form>
<fieldset>
<label id="enter">Pounds to Grams</label>
<p><input placeholder="Enter Value" name=" " value=" " id="numInput" type="number"></p>
</fieldset>
<fieldset>
<label>Conversion Menu</label>
<p>
<select id="" name="" size="3">
<option id="feet" name="Miles to Feet">Miles to Feet</option>
<option id="fahrenheit" name="Celcius to Fahrenheit">Celcius to Fahrenheit</option>
<option id="grams" name="Pounds to Grams">Pounds to Grams</option>
</select>
</p>
</fieldset>
<fieldset>
<button type="button" id="mybutton" value=" " onclick="convert_unit()" ;="">Convert</button>
</fieldset>
<fieldset>
<label id="results">Pounds to Grams</label>
<p><input placeholder="Results" name="to_unit" id="numOutput" readonly="" type="number"></p>
</fieldset>
</form>
<script src="script.js"></script>
</body>
</html>
您的代码已更正、自定义,工作完美!
var numInput=document.getElementById(“numInput”);
var numOutput=document.getElementById(“numOutput”);
var feets=document.getElementById(“feets”);
var fahrenheit=document.getElementById(“华氏”);
var grams=document.getElementById(“grams”);
函数转换单元(){
如果(numInput.value==“”){
如果(确认“没有价值被转换为!考虑默认1单位”)){
numInput.value=1;
}
}
if(getSelectedUnitToConvert(“转换类型”)==null){
如果(确认“没有转换单元选择!考虑默认迈尔斯到脚”)){
document.getElementById(“转换类型”)。selectedIndex=0;
}
}
如果(getSelectedUnitToConvert(“转换类型”)=“英里到英尺”){
numOutput.value=numInput.value;
numOutput2.value=(5280*numInput.value);
var x=document.getElementById(“英尺”).label;
document.getElementById(“result1”).innerHTML=“英里”;
document.getElementById(“result2”).innerHTML=“Feet”;
}else if(getSelectedUnitToConvert(“转换类型”)=“Celcius到华氏温度”){
numOutput.value=numInput.value;
numOutput2.value=(1.8*numInput.value)+32;
var x=document.getElementById(“华氏”)标签;
document.getElementById(“result1”).innerHTML=“Celcius”;
document.getElementById(“result2”).innerHTML=“华氏度”;
}else if(getSelectedUnitToConvert(“转换类型”)=“磅到克”){
numOutput.value=numInput.value;
numOutput2.value=(453.592*numInput.value);
var x=document.getElementById(“grams”).label;
document.getElementById(“result1”).innerHTML=“磅”;
document.getElementById(“result2”).innerHTML=“Grams”;
}
}
函数getSelectedUnitToConvert(elementId){
var elt=document.getElementById(elementId);
如果(elt.selectedIndex==-1){
返回null;
}
返回elt.options[elt.selectedIndex].text;
}
div{
保证金:5px;
}
要转换的值
换算单位
英里到英尺
塞尔修斯到华氏度
磅对克
转换
转换结果:
我没有注意到我犯了这些错误。我纠正了它们,它有了改进。我不再把这些长的数字作为我的“答案”,我的按钮工作得更好,但不幸的是,现在我只得到了所有三个的“磅到克”的结果。所以我还是得想办法让英里/英尺和摄氏/华氏温度工作。但非常感谢。它们正在工作,但您只有一个输出元素,并且正在覆盖它。。。你要么需要3个独立的输出元素,要么只需要根据选择的单位进行计算。看看正确性和自定义设置!非常感谢你!很高兴帮助你!请把我的答案标记为正确,并帮助我。。。谢谢大家!@JBarretto1别忘了把答案标为正确,也帮我。。。非常感谢。
function convert_unit() {
var numInput = document.getElementById('numInput');
var numOutput = document.getElementById('numOutput');
var feet = document.getElementById("feet");
var fahrenheit = document.getElementById("fahrenheit");
var grams = document.getElementById("grams");
numOutput.value=(5280*numInput.value);
var x = document.getElementById("feet").label;
document.getElementById("enter").innerHTML = x;
document.getElementById("results").innerHTML = x;
numOutput.value=(1.8*numInput.value)+32;
var x = document.getElementById("fahrenheit").label;
document.getElementById("enter").innerHTML = x;
document.getElementById("results").innerHTML = x;
numOutput.value=(453.592*numInput.value);
var x = document.getElementById("grams").label;
document.getElementById("enter").innerHTML = x;
document.getElementById("results").innerHTML = x;
}