0

当我使用 innerHTML 测试我的代码时,给出了 var num1=57; 得到正确的结果 73.375,现在当输入数字 57 时更改代码以使用带有输入类型文本框的表单时,它会将预期结果更改为 629.625 .. 对此的任何帮助将不胜感激

<!DOCTYPE html>

<head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
      <link rel="style" href="css/main.css"  type"text/css"/>
      <title> Get final width </title>

      <script type= "text/javascript">

            function sum()
            {

            var num1;
            num1= document.getvalue.width.value;


            var acc1 = (num1 + 0.625)/(6.25-0.5); 
            var acc2 = Math.ceil((acc1 * 10) / 10) * 6.25 + (4.125 + 0.5);

            document.getElementById('finalwidth').value = (acc2).toFixed(3);
            document.getElementById("finalwidth").readOnly=true;
            }
      </script>       
</head>

<body>
            <div>
            <h3> when input is 57  final width result should be : 73.375</h3>
            <h3> when input is 100  final width result should be : 117.125</h3>
            </div>

            <form name= "getvalue">

                    <label for="width"> Width: </label>
                    <input type="text" name="width" maxlength="5" size="10" value=""/>

                    <input type="button" name="button" Value="calculate" onclick="sum()"/>

                    <label for="finalwidth"> Final width: </label>
                    <input type="text" id="finalwidth" name="finalwidth" maxlength="4" size="10" value=""/>

            </form> 
</body>

4

2 回答 2

0

试试这个:- http://jsfiddle.net/aidioo7/6q8u5/1/

JS:-

function sum() {

    var num1;
    num1 = parseInt(document.getvalue.width.value);


    var acc1 = (num1 + 0.625) / (6.25 - 0.5);
    var acc2 = Math.ceil((acc1 * 10) / 10) * 6.25 + (4.125 + 0.5);

    document.getElementById('finalwidth').value = (acc2).toFixed(3);
    document.getElementById("finalwidth").readOnly = true;
}
于 2013-10-31T03:55:36.393 回答
0

当你这样做时:

num1 = document.getvalue.width.value;

num1的值是一个字符串(因为表单控制值总是字符串)。所以当你这样做时:

num1 + 0.625

这些值作为字符串连接,而不是作为数字添加。所以如果num1的值是 say 57,那么上面的表达式的结果就是字符串570.625。由于进行了其他算术运算,最终结果为:

(num1 + 0.625)/(6.25 - 0.5)

将是一个数字。

简单的解决方法是使用一元运算符将num1转换为数字+

var num1 = +document.getvalue.width.value;

或者

var acc1 = (+num1 + 0.625)/(6.25 - 0.5)

您还可以更明确地使用 Number 作为函数:

var num1 = Number(document.getvalue.width.value);
于 2013-10-31T04:03:41.220 回答