Javascript 表单值消失

标签 javascript html dom

首先是代码:

    <html>
    <head></head>
    <body>
     <script>
        function calc_form(first, second) {
            x = document.getElementById("calc");
            first = document.forms["calc"].elements["first"].value;
            second = document.forms["calc"].elements["second"].value;
            third =  first*second;
            document.forms["calc"].elements["result"].value = third;
            document.getElementById("result1").innerHTML = third;
        }
    </script>
<form name = "calc">
    <input type = "text" name="first">
    <input type="text" name="second">
    <input type="submit" onclick = "calc_form()"><br>
    <input type="text" id="result">
</form>
<p id="result1"></p>
 </body>
</html>

我知道这是一个无用且非常糟糕的代码,但我想知道为什么我在输入框中输入的值在我单击“提交”按钮后立即消失。

同样,第三个输入框中的结果只出现片刻,然后就消失了。为什么会发生这种情况?

最佳答案

当单击 html 提交按钮时,将收集表单值并生成服务器请求。根据定义的请求类型(POST 或 GET),数据以 URL 或表单格式发送到服务器。请求后,页面会刷新,因为客户端 html 代码会再次呈现。

您可以构建在服务器端响应收到客户端结果后读取值的逻辑。但是,我想您需要在代码中防止每次单击按钮时都将数据发送到服务器端,并仅在客户端上进行计算。有两种方法可以做到这一点:

  1. 将按钮类型从“提交”更改为“按钮”。
  2. 在 oncick 事件中以及函数末尾“return false”。它阻止提交操作并向服务器发送提交请求。

    <input type="submit"onclick="return calc_form()">

然后:

function calc_form(first, second) {
        ...
        return false;
        ...
    }

关于Javascript 表单值消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28250268/

相关文章:

html - 当内容需要滚动时内容移动

python - 关于 Python 中使用的 DOM 解析器的问题

javascript - 如何遍历 HTML DOM?以及如何获取元素的事件、样式和属性(附示例)

javascript - 通过 document.X 访问 DOM 元素

javascript - 添加删除的选择选项

javascript - 如果满足条件,则在另一个转换期间添加并发转换

javascript - 当按钮被禁用时创建警报

javascript - js中如何比较两个或多个按钮?

javascript - [HTML CSS JS]防止用户使用 before 元素更改值

javascript - canvas.clear() 上的 Canvas 变得不完全清晰