Javascript 改变表单元素

标签 javascript forms

我正在尝试重温我的 JS,我想要它以便用户可以输入他们的名字和姓氏以及两个数字。当他们单击按钮时,我希望文本更改为“你好姓名!你的总和是数字!”

我的代码不工作,有人能告诉我我的问题出在哪里吗?

<html>
<head>
<meta charset="UTF-8">
<title>JS Review</title>

<style>
    body{background: #8ADFB6; font-family: Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, "sans-serif";}
    #container{background: white; padding: 30px; width: 760px; margin: 0 auto;}
    #output{
        padding: 10px; margin: 10px;
    }
</style>
</head>

<body>

<div id="container">

    <h1>Using Form Elements with Javascript</h1>


    <p>We can utilize user input to create feedback</p>
    First Name: <input id="first">
    Last Name: <input id="last">
    <p></p>
    Number 1: <input id="num1">
    Number 2: <input id="num2">
    <p></p>
    <button onClick="Respond()">Respond</button>

    <div id="output"></div>
</div>

<script>
    function myFunction(){

        var a = document.getElementById("first").value;
        var b = document.getElementById("last").value;
        var c = document.getElementById("num1").value;
        var d = document.getElementById("num2").value;
        var n= document.getElementById("sum").value;

        var n= c + d;

        document.getElementById("Respond").innerHTML="Respond";

    }



    document.getElementById("Respond").innerHTML = "Hello! Your sum is !";


</script>
</body>
</html>

最佳答案

你有很多问题。

首先,您尝试进行数学运算但使用的是字符串值。你不能这样做,否则他们会合并并生成 3 + 1 = 31 而不是 4。你可以通过解析 float 来解决这个问题,现在我建议的一件事是确认它们是数字,这样你就不会做无效的事情解析。

if(isNaN(c) || isNaN(d) {
     alert('Invalid Input');
}else{
    var n= parseFloat(c) + parseFloat(d);
    document.getElementById("Respond").innerHTML = "Hello! Your sum is " + n;
}



接下来,您正在调用函数响应,但该函数不存在。确实存在的是 myFunction,因此您有几个选择。

要么更新您 JS 中的这一行以使用 Respond 作为函数名称:

function myFunction(){

应该是:

function Respond(){

或者更新您的 HTML 按钮以使用正确的函数名称:

 <button onClick="Respond()">Respond</button>

应该是:

 <button onClick="myFunction()">Respond</button>



接下来,您要查找 ID 为 respond 的元素,但该元素不存在。您又一次使用了错误的 ID。您需要在那里使用输出。

这一行:

    document.getElementById("Respond").innerHTML = "Hello! Your sum is !";

应该是:

    document.getElementById("output").innerHTML = "Hello! Your sum is " + n + "!";



接下来,您试图获取 ID 为 sum 的某物的值,但它根本不存在。

直接删除这一行:

        var n= document.getElementById("sum").value;



最后,为什么你的值更新器在函数调用之外?该更新程序需要位于函数内部,其中包含实际获取值的内容。如果不这样做,您将永远无法更新字符串。

<html>
<head>
<meta charset="UTF-8">
<title>JS Review</title>

<style>
    body{background: #8ADFB6; font-family: Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, "sans-serif";}
    #container{background: white; padding: 30px; width: 760px; margin: 0 auto;}
    #output{
        padding: 10px; margin: 10px;
    }
</style>
</head>

<body>

<div id="container">

    <h1>Using Form Elements with Javascript</h1>


    <p>We can utilize user input to create feedback</p>
    First Name: <input id="first">
    Last Name: <input id="last">
    <p></p>
    Number 1: <input id="num1">
    Number 2: <input id="num2">
    <p></p>
    <button onClick="myFunction()">Respond</button>

    <div id="output"></div>
</div>

<script>
    function myFunction(){

        var a = document.getElementById("first").value;
        var b = document.getElementById("last").value;
        var c = document.getElementById("num1").value;
        var d = document.getElementById("num2").value;
        if(isNaN(c) || isNaN(d)) {
          alert('Invalid Input');
        }else{
          var n= parseFloat(c) + parseFloat(d);
          document.getElementById("output").innerHTML = "Hello! Your sum is " + n;

        }

    }


</script>
</body>
</html>

因此,虽然我在这里给了您相当多的内容供您查看,但您确实需要花一点时间来检查您的代码。如果您放慢速度并阅读您正在做的事情,您有很多问题本来可以解决的。

关于Javascript 改变表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54099294/

相关文章:

javascript - 中断表单提交的模式

php - 如何使用同名的多个复选框自定义查询字符串?

zend-framework - zend中的动态表单?

javascript - HTML5 游戏 - 如何使图像仅在特定的 x-y 坐标之间渲染?

javascript - Parse.com 云作业 : Array of pointers missing entries and containing null

javascript - 将 div 定位到第一位 - 像堆栈一样

php - 如何将自定义字段添加到 WooCommerce 注册表单

java - 实现客户端多文件上传服务的有效方法

javascript - 如果我们从数据库获取数据,则使用 javascript 和 codeigniter 向下滚动不起作用

php - Symfony 在 form->handleRequest() 和验证上的模糊错误