编程语言
首页 > 编程语言> > 使用表单收集Javascript函数的数据?

使用表单收集Javascript函数的数据?

作者:互联网

我正在尝试通过一页上的表单收集数据,然后将该数据传输到下一页以在JS函数中使用.
(特别是,我希望用户输入二次方程式的A,B和C的值,然后发送到页面,脚本将在其中获取这些值并运行方程式以输出答案).

这是我第一页的代码—>

    <body> 

    <h1> Welcome to the Math Equation Solver </h1> 

    <p> Which equation would you like to solve? (Simply input the data for the equation you wish to solve). </p> 

    <form name="quad" method="get" action="JS_B.html"> 

<input 
<input type="text" name="a_val" size="5"> 
<br>
<input type="text" name="b_val" size="5"> 
<br>
<input type="text" name="c_val" size="5"> 
<br>

<input type="submit" method="get" action="JS_B.html" value="Submit"> 

<input type="hidden" name="a_val"> 
<input type="hidden" name="b_val">
<input type="hidden" name="c_val"> 
</form> 

这是第二页的代码—>

<title>JS_Math Scripts</title>


<body> 

<script type="Javascript"> 
function answer()
{
var a = a_val
document.writeln(a_val) 
var b = b_val
var c = c_val
var root = Math.pow(b, 2) - 4 * a * c 
var answer1 = (-b + Math.sqrt(root)) / 2*a 
var answer2 = (-b - Math.sqrt(root)) / 2*a  
     if(root<'0'); 
     {
     alert('This equation has no real solution.')
     }else{
              if(root=='0')
              {          
              answerOne = answer1
          document.writeln(answerOne)
              answerTwo = 'No Second Answer'
              }else{
                   answerOne = answer1
           document.writeln(answerOne)
                   answerTwo = answer2
           document.writeln(answerTwo)
                   }
          }
}
//  End -->
</script>

<input type="hidden" name="a_val"> 
<input type="hidden" name="b_val">
<input type="hidden" name="c_val"> 
<input type="hidden" name="answerOne">
<input type="hidden" name="answerTwo">
<input type="hidden" name="Answer">


</body> 
</html> 

因此,无论如何,当我输入A,B和C的值时,它将带我到第二页,但没有得到结果.我已经尝试过检查元素,并且控制台未指示任何错误,所以我认为我的数据正在正确传输.有任何想法吗?

解决方法:

您可以使用FormData()从< input>中检索值. < form>中的元素;使用JSON.stringify(),encodeURIComponent()将值从表单作为查询字符串传递给JS_B.html.

在JS_B.html的窗口加载事件发生时,使用decodeURIComponent(),JSON.parse()在location.search检索对象.解构分配以使用传递的对象在答案函数中设置变量.

包括;按照变量分配,删除;如果条件以下

的index.html

<!DOCTYPE html>
<html>

<head>
</head>

<body>
  <h1> Welcome to the Math Equation Solver </h1>

  <p> Which equation would you like to solve? (Simply input the data for the equation you wish to solve). </p>

  <form name="quad">

    <input type="text" name="a_val" size="5">
    <br>
    <input type="text" name="b_val" size="5">
    <br>
    <input type="text" name="c_val" size="5">
    <br>

    <input type="submit" value="Submit">
<!--
    <input type="hidden" name="a_val">
    <input type="hidden" name="b_val">
    <input type="hidden" name="c_val">
    -->
  </form>
  <script>
    var form = document.querySelector("form");
    form.onsubmit = function(e) {
      e.preventDefault();
      var data = new FormData(this);
      var obj = {};
      for (prop of data.entries()) {
        obj[prop[0]] = prop[1]
      };
      var query = encodeURIComponent(JSON.stringify(obj));
      location.href = "JS_B.html?" + query;
    }
  </script>
</body>

</html>

JS_B.html

<!DOCTYPE html>
<html>

<head>

</head>

<body>
  <script>

    function answer(obj) {

      var {
        a_val: a,
        b_val: b,
        c_val: c
      } = obj;
      document.writeln(a);
      var root = Math.pow(b, 2) - 4 * a * c;
      var answer1 = (-b + Math.sqrt(root)) / 2 * a;
      var answer2 = (-b - Math.sqrt(root)) / 2 * a;
      if (root < 0) {
        alert('This equation has no real solution.')
      } else {
        if (root == 0) {
          answerOne = answer1;
          document.writeln(answerOne);
          answerTwo = 'No Second Answer'
        } else {
          answerOne = answer1;
          document.writeln(answerOne);
          answerTwo = answer2;
          document.writeln(answerTwo)
        }
      }
    } // End -->

    window.onload = function() {
      var obj = JSON.parse(decodeURIComponent(location.search.slice(1)));
      console.log(obj);
      answer(obj);
    }
  </script>

  <input type="hidden" name="a_val">
  <input type="hidden" name="b_val">
  <input type="hidden" name="c_val">
  <input type="hidden" name="answerOne">
  <input type="hidden" name="answerTwo">
  <input type="hidden" name="Answer">

</body>

</html>

plnkr http://plnkr.co/edit/aaY5rcJ6v0g7bdEEr7h0?p=preview

标签:html,javascript,forms,equations
来源: https://codeday.me/bug/20191013/1904410.html