Javascript 按tab键或onclick Function present键时自动输入NaN值

Javascript 按tab键或onclick Function present键时自动输入NaN值,javascript,php,jquery,html,mysql,Javascript,Php,Jquery,Html,Mysql,大家好,开发人员/程序员/程序员。。当我按Tab键进入下一行时,NaN值会自动输入,即使onclick给我NaN,则总计列的总和也将为NaN且不会改变。。我不知道如何删除NaN值。。。请帮帮我!这是我的密码: <html> <link rel = "stylesheet" href = "styling.css?version=3"></link> <body> <div id='acctdetails' style='pa

大家好,开发人员/程序员/程序员。。当我按Tab键进入下一行时,NaN值会自动输入,即使onclick给我NaN,则总计列的总和也将为NaN且不会改变。。我不知道如何删除NaN值。。。请帮帮我!这是我的密码:

<html>
<link rel = "stylesheet" href = "styling.css?version=3"></link>
    <body>

    <div id='acctdetails' style='padding-left: 15% '>
            <?php
            echo "USERNAME: ". $_SESSION["dynau"]; 
            ?>

                OR Date: <input type='text' placeholder='OR Date' name='ordate' value='<?php echo date('M, d, Y');?>'>

                OR ID: <input type='text' placeholder='OR ID' name='orid'>

                Payor : <input type='text' placeholder='Payor' name='payor' >
    </div>


    <center>
        <form method="POST">
            <?php       
    $result = mysqli_query($link,"SELECT * FROM account_db");

    echo"<html>";
    echo "<script>";
    echo "function calculate(amount, id){ 
          document.getElementById('total' + id).innerHTML = parseInt(document.getElementById('copy' + id).value) * amount; 
             var x=parseInt(document.getElementById('total' + id).innerHTML);
                var y = document.getElementById('sumtotal').innerHTML;
                var a = y.split(' ');
                var z = parseInt(a[1]) + parseInt(x);
                document.getElementById('sumtotal').innerHTML = 'Total: ' + z;

            }";
    echo "</script>";
    echo"<center>";
    echo "<form method='POST'>";
    echo "<br></br>";
    echo "<table style='border:1px solid black' id='thetable' name='pleasework'>";
    echo"<th>FILES</th>";
    echo"<th>AMOUNT</th>";
    echo"<th>NO. OF COPIES</th>";
    echo"<th>TOTAL AMOUNT</th>";

    $counter = 0;
    while($row = mysqli_fetch_row($result))
    {
        echo"<tr>";
        echo "<td >$row[1] </td>";
        echo "<td align=center>$row[2] </td>";
        echo "<td align=center>
                <input type='number' id='copy" . $counter . "' onkeyup='calculate(" . $row[2] .  ", " . $counter . ")'> 
                </td>";
            echo "<td align=center id='total" . $counter . "'></td>";
        echo"</tr>";
        $counter++;
        }   


    echo"<tr>
            <td  id='sumtotal'>TOTAL: 0</td>
        </tr>";


    echo "</table>";
    echo " <br><div style='padding-left: 15px'><input type='submit' id='btn1' value='Transact' name='transaction' onclick='javascript: window.print()'></div>";
    echo"</center>";
    echo"</html>";      
?>      
    </center>
    </body>
</html>


或日期:您的第一期在这一行:

document.getElementById('total' + id).innerHTML = parseInt(document.getElementById('copy' + id).value) * amount; 
为了了解问题,您可以自己尝试:

parseInt('')
上一次操作的结果是,因此:

parseInt('')+amount
将是(不是数字)

这意味着您需要在继续计算之前测试该值:

!!ele.value.trim()   --> value is not empty
我建议您使用:

(对于输入字段):控件的初始值。此属性是可选的,除非类型属性的值为radio或checkbox。 请注意,当重新加载页面时,Gecko和IE将忽略HTML源中指定的值,如果该值在重新加载之前已更改

(对于具有文本值的单元格):表示节点及其子体的文本内容

而不是:

:设置或获取描述元素子体的HTML语法

此外,为了简化代码,您可以考虑遍历DOM,以获得其他两个兄弟单元中包含的值。

在您的案例中使用关键字this。这个关键字代表当前元素,因此您不需要从dom获取它

片段:

函数计算(ele){
如果(!!ele.value.trim()){
var x=+ele.value*+ele.parentElement.previousElementSibling.textContent.trim();
变量y=+document.getElementById('sumtotal').textContent.trim().split(''.pop();
ele.parentElement.nextElementSibling=x;
var z=x+y;
document.getElementById('sumtotal')。textContent='Total:'+z;
}
}

用户名:。。。
或日期:
或ID:
付款人:

文件夹 数量 副本数目 总额 1. 11 总数:0

您的第一个问题在这一行:

document.getElementById('total' + id).innerHTML = parseInt(document.getElementById('copy' + id).value) * amount; 
为了了解问题,您可以自己尝试:

parseInt('')
上一次操作的结果是,因此:

parseInt('')+amount
将是(不是数字)

这意味着您需要在继续计算之前测试该值:

!!ele.value.trim()   --> value is not empty
我建议您使用:

(对于输入字段):控件的初始值。此属性是可选的,除非类型属性的值为radio或checkbox。 请注意,当重新加载页面时,Gecko和IE将忽略HTML源中指定的值,如果该值在重新加载之前已更改

(对于具有文本值的单元格):表示节点及其子体的文本内容

而不是:

:设置或获取描述元素子体的HTML语法

此外,为了简化代码,您可以考虑遍历DOM,以获得其他两个兄弟单元中包含的值。

在您的案例中使用关键字this。这个关键字代表当前元素,因此您不需要从dom获取它

片段:

函数计算(ele){
如果(!!ele.value.trim()){
var x=+ele.value*+ele.parentElement.previousElementSibling.textContent.trim();
变量y=+document.getElementById('sumtotal').textContent.trim().split(''.pop();
ele.parentElement.nextElementSibling=x;
var z=x+y;
document.getElementById('sumtotal')。textContent='Total:'+z;
}
}

用户名:。。。
或日期:
或ID:
付款人:

文件夹 数量 副本数目 总额 1. 11 总数:0