当前位置: 首页 > 知识库问答 >
问题:

Javascript表单的问题

养聪
2023-03-14

我对Javascript非常陌生,我正在研究这个表单。 目标是让用户输入关于他们房子的信息,并输出一个预测价格。 不幸的是,不管是什么原因,我的按钮不工作,所以什么都不输出。 我想知道我是否正确地设置了表格。

null

<html> 
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title> </title>
        <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]--> 
        <link rel="stylesheet" type="text/css" href="css/reset.css">
        <link rel="stylesheet" type="text/css" href="css/style.css">
        <link href='http://fonts.googleapis.com/css?family=Crete+Round' rel='stylesheet' type='text/css'>
        <style type="text/css">
        </style>
        <meta charset="UTF-8" />
        <script type="text/javascript">
            function getPrice() {
                var form = document.getElementById("calc");
                var out = form.elements["z"];
                //get numbers
                var sqftVal = parseInt(form.elements["sqft"].value);
                var bathsVal = parseFloat(form.elements["baths"].value);
                var builtVal = parseInt(form.elements["built"].value);
                var lotVal = parseFloat(form.elements["lot"].value);
                
                for (i = 0; i < document.forms[0].gar.length; i++) {
                    if (document.forms[0].gar[i].checked) {
                        var garageVal = parseInt(document.forms[0].gar[i].value);
                    }
                }
                for (i = 0; i < document.forms[0].housetype.length; i++) {
                    if (document.forms[0].housetype[i].checked) {
                        var houseVal = document.forms[0].housetype[i].value;
                    }
                }
                for (i = 0; i < document.forms[0].neigh.length; i++) {
                    if (document.forms[0].neigh[i].checked) {
                        var neighVal = document.forms[0].neigh[i].value;
                    }
                }
                
                
                tempNum = -4309000.0 
                + 215200 * Math.log(sqftVal) 
                + 162300 * logVal
                + 526.2 * Math.exp(bathsVal)
                + 1576 * builtVal;
                
                if (garageVal == "2") {
                    tempNum = tempNum + 55830;
                }
                else if (garageVal == "3") {
                    tempNum = tempNum + 105000;
                }
                
                if (houseVal == "tw") {
                    tempNum = tempNum - 64780;
                }
                
                if (neighVal == "w") {
                    tempNum = tempNum + 102000;
                }
                else if (neighVal == "o") {
                    tempNum = tempNum + 40210;
                }
                
                out.value = Math.round(tempNum);
                
                
            }   
        </script>
    </head>
    <body>
        <form>
        <div id="featuresAshburn">
            <h3>Find Out What Your Home is Worth</h3>
            <font color = "#A52A2A"> <center> Note: For condominiums, be sure to input a lot size of 0. For townhomes, be sure to input the <br> appropriate lot size. Do not leave any question blank in order to receive an accurate prediction. </center> </font>
            <div class="wrapper">
                <ul>
                    <li class="feature-1">
                        <p> </p>
                        <form id="calc">
                            <fieldset>
                                <legend>House Type</legend>
                                <div>
                                    <input type="radio" id="sf" name="housetype" value="sf" checked="checked" />
                                    <label for="sf">Single Family</label>
                                </div>
                                <div>
                                    <input type="radio" id="tw" name="housetype" value="tw" />
                                    <label for="tw">Townhouse/Condo</label>
                                </div>
                            </fieldset>
                            <p> </p>
                            <fieldset>
                                <legend>Neighborhood</legend>
                                <div>
                                    <input type="radio" id="o" name="neigh" value="o"  />
                                    <label for="o">Oak Hill</label>
                                </div>
                                <div>
                                    <input type="radio" id="w" name="neigh" value="w" />
                                    <label for="w">Willow</label>
                                </div>
                                <div>
                                    <input type="radio" id="other" name="neigh" value="other" checked="checked" />
                                    <label for="other">Other</label>
                                </div>
                            </fieldset>
                        </li>
                        <li class="feature-2">
                            <p> </p>
                            <fieldset>
                                <legend>Square Feet</legend>
                                <input name="sqft" id="sqft" type="number" min="0" max="8000" value = "2500" required />
                            </fieldset>
                            <fieldset>
                                <legend>Number of Bathrooms</legend>
                                <input
                                name="baths"
                                id="baths"
                                type="number"
                                step="0.5"
                                min="0.5"
                                max="6.5"
                                value = "3.5"
                                required
                                />
                            </fieldset>
                            <fieldset>
                                <legend>Year Built</legend>
                                <input name="built" id="built" type="number" min="1988" max="2020" value = "2004" required />
                            </fieldset>
                            <fieldset>
                                <legend>Lot Size (in Acres)</legend>
                                <input
                                name="lot"
                                id="lot"
                                type="number"
                                step="0.01"
                                min="0"
                                max="1.54"
                                value = "0.11"
                                required
                                />
                            </fieldset>
                            <p> </p>
                            <!-- Add this element -->
                            <fieldset>
                                <legend>Predicted value</legend>
                                <input name="z" />
                            </fieldset>
                            <button type="button" onclick="getPrice()">
                                Predict My Home's Value
                            </button>     
                        </li>
                        <li class="feature-3">
                            <p> </p>
                            <fieldset>
                                <legend>Number of Garages</legend>
                                <div>
                                    <input type="radio" id="0" name="gar" value="0" checked="checked" />
                                    <label for="a">0</label>
                                </div>
                                <div>
                                    <input type="radio" id="1" name="gar" value="1" />
                                    <label for="b">1</label>
                                </div>
                                <div>
                                    <input type="radio" id="2" name="gar" value="2" />
                                    <label for="c">2</label>
                                </div>
                                <div>
                                    <input type="radio" id="3" name="gar" value="3" />
                                    <label for="d">3</label>
                                </div>
                            </fieldset>
                        </li>
                        <div class="clear"></div>
                    </ul>
                </div>
            </div>
        </form>
    </body>
</html>

null

它与包装没有任何关系,因为它们很好地工作和显示。 我有其他的页面像这样的其他城镇,他们工作完美。

当我在编辑器中的堆栈溢出上运行它时,下面是一个错误:

{
  "message": "Script error.",
  "filename": "",
  "lineno": 0,
  "colno": 0
}

null

共有1个答案

公良玺
2023-03-14

您遇到了一些较小的html问题(如表单标记的位置),您将lotval拼写为logval

检查html代码的一个好方法是使用w3验证器。 另外,如果您检查console.log,您会看到logVal是未定义的

null

      function getPrice() {
        var form = document.getElementById("calc");
        var out = form.elements["z"];
        //get numbers
        var sqftVal = parseInt(form.elements["sqft"].value);
        var bathsVal = parseFloat(form.elements["baths"].value);
        var builtVal = parseInt(form.elements["built"].value);
        var lotVal = parseFloat(form.elements["lot"].value);

        for (i = 0; i < document.forms[0].gar.length; i++) {
          if (document.forms[0].gar[i].checked) {
            var garageVal = parseInt(document.forms[0].gar[i].value);
          }
        }
        for (i = 0; i < document.forms[0].housetype.length; i++) {
          if (document.forms[0].housetype[i].checked) {
            var houseVal = document.forms[0].housetype[i].value;
          }
        }
    for (i = 0; i < document.forms[0].neigh.length; i++) {
          if (document.forms[0].neigh[i].checked) {
            var neighVal = document.forms[0].neigh[i].value;
          }
        }
          
          
            tempNum = -4309000.0 
            + 215200 * Math.log(sqftVal) 
            + 162300 * lotVal
                + 526.2 * Math.exp(bathsVal)
                + 1576 * builtVal;
          
          if (garageVal == "2") {
              tempNum = tempNum + 55830;
          }
          else if (garageVal == "3") {
              tempNum = tempNum + 105000;
          }
          
          if (houseVal == "tw") {
              tempNum = tempNum - 64780;
          }
          
          if (neighVal == "w") {
              tempNum = tempNum + 102000;
          }
          else if (neighVal == "o") {
              tempNum = tempNum + 40210;
          }
          
          out.value = Math.round(tempNum);
            
          
      }
    
    
    
<html> 
      
     
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <title> </title>
     <!--[if lt IE 9]>
     <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
     <![endif]--> 
     <link rel="stylesheet" type="text/css" href="css/reset.css">
     <link rel="stylesheet" type="text/css" href="css/style.css">
     <link href='http://fonts.googleapis.com/css?family=Crete+Round' rel='stylesheet' type='text/css'>

 <style type="text/css">
</style>

<meta charset="UTF-8" />

  </head>
  <body>


    

<div id="featuresAshburn">
        <h3>Find Out What Your Home is Worth</h3>
        <font color = "#A52A2A"> <center> Note: For condominiums, be sure to input a lot size of 0. For townhomes, be sure to input the <br> appropriate lot size. Do not leave any question blank in order to receive an accurate prediction. </center> </font>
        <div class="wrapper">
         <form id="calc">

        <ul>
            <li class="feature-1">
                <p> </p>
        

           
                  <fieldset>
                <legend>House Type</legend>
                <div>
                  <input type="radio" id="sf" name="housetype" value="sf" checked="checked" />
                  <label for="sf">Single Family</label>
                </div>
                <div>
                  <input type="radio" id="tw" name="housetype" value="tw" />
                  <label for="tw">Townhouse/Condo</label>
                </div>
                  </fieldset>
                <p> </p>
                <fieldset>
                <legend>Neighborhood</legend>
                <div>
                  <input type="radio" id="o" name="neigh" value="o"  />
                  <label for="o">Oak Hill</label>
                </div>
                <div>
                  <input type="radio" id="w" name="neigh" value="w" />
                  <label for="w">Willow</label>
                </div>
                <div>
                  <input type="radio" id="other" name="neigh" value="other" checked="checked" />
                  <label for="other">Other</label>
                </div>
                  </fieldset>
                
            </li>
            <li class="feature-2">
                <p> </p>
        

            <fieldset>
                <legend>Square Feet</legend>
                <input name="sqft" id="sqft" type="number" min="0" max="8000" value = "2500" required />
                  </fieldset>
                  <fieldset>
                <legend>Number of Bathrooms</legend>
                <input
                  name="baths"
                  id="baths"
                  type="number"
                  step="0.5"
                  min="0.5"
                  max="6.5"
                       value = "3.5"
                       required
                />
                  </fieldset>
                  <fieldset>
                <legend>Year Built</legend>
                <input name="built" id="built" type="number" min="1988" max="2020" value = "2004" required />
                  </fieldset>
                  <fieldset>
                <legend>Lot Size (in Acres)</legend>
                <input
                  name="lot"
                  id="lot"
                  type="number"
                  step="0.01"
                  min="0"
                  max="1.54"
                       value = "0.11"
                       required
                />
                  </fieldset>
                
                <p> </p>
            
                
                <!-- Add this element -->
      <fieldset>
        <legend>Predicted value</legend>
        <input name="z" />
      </fieldset>
                
    <button type="button" onclick="getPrice()">
        Predict My Home's Value
      </button>       

            
            </li>
            <li class="feature-3">
                <p> </p>

            
            <fieldset>
                <legend>Number of Garages</legend>
                <div>
                  <input type="radio" id="0" name="gar" value="0" checked="checked" />
                  <label for="a">0</label>
                </div>
                <div>
                  <input type="radio" id="1" name="gar" value="1" />
                  <label for="b">1</label>
                </div>
                <div>
                  <input type="radio" id="2" name="gar" value="2" />
                  <label for="c">2</label>
                </div>
                <div>
                  <input type="radio" id="3" name="gar" value="3" />
                  <label for="d">3</label>
                </div>
                  </fieldset>
                
            </li>
            <div class="clear"></div>
        </ul>
        
   
      
      
    </form>
 类似资料:
  • 这是关于先前提出的一个持续的问题。我正在尝试使用HTML、CSS和JavaScript制作一个联系表单。我所有的条件似乎都很好。这里的问题是,每当我输入一个特定字段失败,然后重新输入它时,错误消息仍然会显示出来。此外,我希望用户在单击Submit并满足所有条件后被重定向到另一个HTML页面。我想在这方面得到一些指导。随函附上守则,以供参考。 null null null null null nul

  • 主要内容:使用 JavaScript 进行表单验证,必填字段验证,数据格式验证表单是 Web 应用(网站)的重要组成部分,通过表单可以收集用户提交的信息,例如姓名、邮箱、电话等。由于用户在填写这些信息时,有可能出现一些错误,例如输入手机号时漏掉了一位、在输入的内容前后输入空格、邮箱的格式不正确等。为了节省带宽同时避免这些问题对服务器造成不必要的压力,我们可以使用 JavaScript 在提交数据之前对数据进行检查,确认无误后再发送到服务器。 使用 JavaScript 来验

  • 对编码完全陌生,我一直在自学。我对自己迄今为止所取得的成就感到非常高兴,现在我想拓展我的学习领域! 所以我组织青少年足球比赛。球队通过谷歌表格进入比赛。表格进入谷歌表格,然后我使用公式确保我可以看到每个年龄组有多少队参赛。每个年龄组在锦标赛中可以拥有最多数量的球队。指向活动窗体的链接是https://forms.gle/8VoBddM8AAJMFXqM7 我想做的事 目前,当一个年龄组接近满员时,

  • 本文向大家介绍Javascript的表单验证长度,包括了Javascript的表单验证长度的使用技巧和注意事项,需要的朋友参考一下 JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。 该采用什么样的方式对用户作出提醒呢?你一定不想用alert()提示框 在输入域后加一个sqan标签 helpText是传入的span对象 用span标签来为用户作出提醒,不会

  • 我正在做一个Django项目,其中一个表单不会提交。我发现罪魁祸首是一些JavaScript,它格式化了货币输入(当我移除JS或移除输入时,它提交) 这是我的简化表单--JS来自html5货币/货币输入

  • 我有问题上传表单使用php,我曾经创建过这样的页面,但由于某种原因,这似乎是渲染,我希望我只是错过了一些如此简单的东西。Im试图创建和上传表单,以上传Wav、rar、zip和txt文件,并返回其他所有的错误。 如果我尝试上传一个与这些文件无关的文件,它会显示一个错误,但如果我尝试上传一个wav或一个zip文件,它不会工作,我不会得到任何类型的错误报告,但如果我要上传一个.txt文件,它似乎工作良好

  • 有两张表,分别储存产品信息与检测信息 检测信息表procheck中pro_id关联到产品信息表pro中的id,每个产品对应有多个检测信息记录 我现在需要把某个公司(产品表中company_id)生产的所有产品的最新一次检测报告调出来? 但是得出的结果却是: 全部给我找了出来,而我真正需要的是箭头上的三条即可。 求SQL语句.....

  • 问题内容: 我有一个简单的SQL问题。我想建立一个三列数据库,并且我有以下代码: 当我尝试导入具有两列(prideID和pubmedID)的简单csv文件时,出现“预期3列数据,但发现2”错误。我希望t1key是一个整数,并在添加新字段时自动计数。我是否必须在主键前放置NOT NULL才能使其正常工作? 问题答案: 不支持重塑输入(设置分隔符除外)。您需要将CSV文件导入到临时表中,然后将其插入到