我的JavaScript代码缺少什么?

我的JavaScript代码缺少什么?,javascript,html,Javascript,Html,我是JavaScript新手,在尝试创建下拉列表单元转换器时遇到问题。该项目要求代码将英里转换为英尺,将摄氏度转换为华氏度,将磅转换为克。问题是当我输入这些值时,输出就偏离了方向 无论我输入什么数字或选择什么单位,我都会得到相同的结果14514.944,而不是相应的结果(5280英尺、33.8°、453.592g等)。如果我双击submit按钮,我会得到62573043513.9154,三次单击26974853408668000,以此类推 我知道我在convert_unit函数中遗漏了一些东西,

我是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;
}