0

我正在为学校编写一个程序,他希望我们执行以下操作:如果在“年龄”字段中输入了任何非数字条目,则会出现一个带有两行消息的警告框:

您输入的年龄只能包含数字。请重新输入。

Then : 如果输入的年龄小于 18 岁,则应在包含消息的按钮下方显示一个附加段落

然后:对于 18 岁及以上,脚本必须根据申请人获得的大学学位计算并显示薪水。如果申请人持有学位,那么工资将由申请人的年龄乘以 1000.00 美元来确定。如果没有学位,乘数将仅为 600.00 美元。当按下确定薪水按钮时,脚本将显示包含计算出的薪水报价的额外段落元素,如下面的示例插图所示。

我已经尝试了所有我能想到的方法来确保年龄字段中没有输入任何字母字符,但我似乎无法让它工作。请帮忙!

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN'
 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>


<head>
   <meta http-equiv='Content-Type' content='text/html; charset= utf-8' />
   <title>Form Based JavaScript</title>
   <style type = "text/css">
      h2 {text-align:left;}
      body {background-color:lightblue;}
      .input {font-family:"Courier New", Courier, monospace;}
   </style>   

   <script type = "text/javascript">
      <!--
   function salary()  `enter code here`
      {
        var age;
        var degree;


      if (age != [0-99]
        {
            document.writeln( "The age that you entered must contain only numerals. <br /> Please re-enter it.");

      else if (age < 18)

           document.writeln( " Sorry - you must be 18 or older for this job. <br /> Please reapply in [18 - age] years." );


      else if (age >=18)

           document.writeln( " You qualify! Salary offer [degree * ] dollars. See our staff for an application" );
          }



      }


      // -->
   </script>

<!-- project6.htm Tatiana Saavedra 04/17/2013 -->

</head>

<body>

<h2> Applicant Screening Page </h2>

<hr />

<form id = "myForm" action = "">
   <p>Email:<input type = "email" id = "email"></p>
   <p>Age:<input type = "number" maxlength="3" size="3" id = "age"></p>
   <p><label>Check the box if you hold a college degree: <input type = "checkbox" id = "degree"></label></p>


<br />
<form action="">
 <input type="button" value="Determine Salary" onclick="salary()"/>
</form>

</body>

</html>
4

3 回答 3

0

尝试这个 :

             function isInteger(n) 
             {
                if (n.indexOf('.') != -1)
                {
                   return false;//do not accept decimal numbers
                }
                return !isNaN(parseInt(n)) && isFinite(n);
             }

parseInt 将值解析为整数,如果值包含字母字符,则返回 NaN

isNaN 检查结果是否为 NaN

isFinite 处理 n 以数字开头但包含字符的情况。

您不使用的原因只是isFinite因为如果您尝试isFinite(' ')它会返回 true。

还可以与parseInt(age)价值进行比较,因为您比较数字会更好

于 2013-04-23T23:39:34.627 回答
0
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN'
 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>

这是一个不应该使用的非常古老的 DOCTYPE(它在 10 多年前旨在帮助从 HTML 过渡到 XHTML,但从未发生过)。只需使用:

<?DOCTYPE html>
<html>


<head>
   <meta http-equiv='Content-Type' content='text/html; charset= utf-8' />

看?内容是 HTML,作为 HTML 提供。:-) [...]

如果这是 XML,那么您只是空白页面。近 20 年来,HTML 注释分隔符一直没有必要,在符合 HTML 标准的浏览器中,头部中的脚本元素从来不需要它们。不要使用它们。

function salary()  `enter code here`
  {

糟糕,那里不能有字符串文字。把它放在函数体中。我喜欢将左大括号与函数关键字和名称放在同一行。我假设字符串根本不存在:

function salary() {
    var age;
    var degree;

    if (age != [0-99]

缺少右括号“)”。

    {
        document.writeln( "The age that you entered must contain only numerals. <br /> Please re-enter it.");

如果您document.writeln在文档加载完成后调用,它将首先调用document.open

清除文档中的所有内容。您可能想要做的是向文档添​​加一个元素并将文本放入其中。或者将文本放在页面中已有的元素中。

    else if (age < 18)

您应该在所有 if 块周围使用大括号,它使代码更易于阅读。有时对于非常简单的块和语句省略它们是很方便的,但这里不是。小号

       document.writeln( " Sorry - you must be 18 or older for this job. <br /> Please reapply in [18 - age] years." );

您似乎正在尝试在字符串中进行算术运算,但您不能这样做。因此document.writeln,用写入元素替换,并执行以下算术运算:

"Please reapply in " + (18 - age) + " years."

.

    else if (age >=18)
        document.writeln( " You qualify! Salary offer [degree * ] dollars. See our staff for an application" );
    }
  }

同样在这里。

</script>
</head>
<body>
<h2> Applicant Screening Page </h2>
<hr>
<form id = "myForm" action = "">
    <p>Email:<input type = "email" id = "email"></p>
    <p>Age:<input type = "number" maxlength="3" size="3" id = "age"></p>

您可以在年龄输入之后放置一个空跨度以放入消息。

    <p><label>Check the box if you hold a college degree: <input type = "checkbox" id = "degree"></label></p>

表单控件需要一个名称才能成功,它们通常不需要 ID。

    <p>Email:<input type="email" name="email"></p>
    <p>Age:<input type ="number" maxlength="3" size="3" name="age"></p>
    <p><label>Check the box if you hold a college degree: <input type="checkbox" name="degree"></label></p>
    <br>
    <form action="">

您不能将表单放入表单中,只需删除上面的标签(它没有结束标签)。

    <input type="button" value="Determine Salary" onclick="salary()">

您需要一个提交按钮来提交表单。

</form>
</body>
</html>

因此,请尝试更新您的代码,如果您需要更多帮助,请返回。

于 2013-04-24T01:23:13.867 回答
0

你有几个错误打开和关闭你的括号,在任何事情之前检查这个,你的javascript没有加载,因此什么都不做,正如已经告诉你的那样,你声明了变量但没有给它们赋值。我还建议您将 javascript 放在页面底部

于 2013-04-23T23:32:11.650 回答