Math.round()在我的JavaScript中不起作用?

时间:2017-05-24 14:00:17

标签: javascript php

对于php和JavaScript来说,这是一个新手。我试图将我从php获得的值四舍五入并将该值存储在JavaScript变量中并将其显示在文本输入中。

以下是我的代码:>

这是我的order_stack.php文件

<div class="order Page">
    <h1>Order Entry</h1>    
        <form name="orderEntry" action="process_stack.php" method="post" >
            <table>
                <tr>
                    <th>
                        <label for="QUNTY">Quantity: </label>
                    </th>
                    <td>
                        <input name="quantity" type="text" id="QUNTY">
                    </td>
                </tr>
                <tr>
                    <th>
                        <label for="APW">Approx. PCS Weight: </label>
                    </th>
                    <td>
                        <input name="approxPcsWeight" type="text" id="APW">
                    </td>
                </tr>
            </table>
                <input type="submit" value="Submit">
        </form>
</div>

这是我的process_stack.php文件

 <?php
        $quantity = $_POST["quantity"];
        $ApxPCW = $_POST["approxPcsWeight"];
        $quantity1 = $_REQUEST["quantity"];
        $ApxPCW1 = $_REQUEST["approxPcsWeight"];
        $knittingLT = ($quantity1 * $ApxPCW1) / 200;
    ?>

<fieldset class="new">
    <legend>Entry Tracking Details</legend>
        <p>
            <table>
                <tr>
                    <th>
                        <label for ="QTY">Quantity: </label>
                    </th>
                    <td>
                        <input name="quantity" type="text" readonly="readonly" id ="QTY" value=<?php echo $quantity?>>
                    </td>
                </tr>
                <tr>
                    <th>
                        <label for ="APW">Approximate PCS Weight: </label>
                    </th>
                    <td>
                        <input name="Approx_PCS_weight" type="text" readonly="readonly" id="APW" value=<?php echo $ApxPCW?>>
                    </td>
                </tr>
                <tr>
                    <th>
                        <label for = "KLT">Knitting Lead Time: </label>
                    </th>
                    <td>
                        <input name="Knitting_Lead_time" type="text" id ="KLT" >
                        <script>
                        var data = "<?php echo $knittingLT; ?>";
                        var roundedData = Math.round('data');
                        document.getElementById('KLT').value = roundedData;
                        </script>
                    </td>
                </tr>
            </table>
        </p>
</fieldset>

我在这里做的是,我将QuantityApprox. PCS Weight相乘并将获得的值除以200.然后我将值存储在$knittingLT

现在在process_stack.php中,我想通过取Knitting Lead Time(这是一个php变量)来更新$knittingLT(这是一个JS变量)并将数据四舍五入并存储在{ {1}}。

当我运行文件时,Knitting Lead Time字段为空。

我对这个问题的态度是错误的吗?

请帮助我解决这个问题。

感谢。

4 个答案:

答案 0 :(得分:4)

我想问题是你正试图围绕字符串字面数据&#39;数据&#39;。

而不是

var roundedData = Math.round('data');

var roundedData = Math.round(data);

答案 1 :(得分:2)

您正在使用单词'data'对字符串进行舍入。

而不是Math.round('data');使用Math.round(data);

此外,您通过将PHP结果放在引号之间来使其成为字符串。虽然您可以对字符串使用Math.round,但最好将其设为数字​​以防止混淆。

20 == '20' // true
20 === '20' // false

尝试:

var data = <?php echo $knittingLT; ?>;

<script>
    var data = <?php echo $knittingLT; ?>;
    var roundedData = Math.round(data);
    document.getElementById('KLT').value = roundedData;
</script>

答案 2 :(得分:2)

Math.round('data');更改为Math.round(data);

Math.round()期望一个数字不是字符串。

答案 3 :(得分:2)

试试这个

 var roundedData = Math.round(data); //edited this line 'data' to data
   document.getElementById('KLT').value = roundedData;