【问题标题】:Validator says it has no errors and code wont run验证器说它没有错误并且代码不会运行
【发布时间】:2022-01-25 07:08:32
【问题描述】:

为什么这段代码不能运行,它有什么问题?当我尝试运行它时,它只是给我一个黑页,我已经通过一个 HTML 验证器运行它,它说一切都很好。如果有人可以帮助我,我将不胜感激。

<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title> Area of circle </title>
   </head>
   <body>
      <script type="text/javascript">
         function CalculateArea(){
         
            var r = document.getElementById('form1').value;
            let p = document.getElementById('area')
            var area = (r * r * Math.PI);
            if (r%1 !=0 || r < 1) p.innerHTML = 'Please enter a whole number greater than 0';
            else p.innerHTML = area;
         }  
         <form id='form1'>
            Type radient of circle:
            <input type="text" name="txtr" size=10>
            <br>
            <input type="button" value="Calculate" onClick='CalculateArea()'>
            <p id='area'></p>
         </form>
      </script>
   </body>
</html>

【问题讨论】:

  • 问题出在&gt;&lt; 的 javascript 中的表单标签中
  • 我有视力问题,但我看到您的&lt;script&gt; 标签没有关闭,您必须在编写 HTML 之前关闭它(在您的 &lt;form&gt; 之前)。

标签: javascript html


【解决方案1】:

新答案

所以在r 变量中不是更多选择整个表单

但您需要的唯一输入(在 html 中我为输入分配了一个新的id

js 中的事实现在是选择输入,并直接从那里获取.value :)

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title> Area of circle </title>
</head>

<body>

    <form id="form1">
        Type radient of circle:
        <input type="text" name="txtr" id="r-input" value="10">
        <br>
        <input type="button" value="Calculate" onclick="CalculateArea()">
        <p id="area">
        </p>
    </form>

    <script type="text/javascript ">
        function CalculateArea() {
            var r = document.getElementById('r-input').value;
            let p = document.getElementById('area');
            var area = (r * r * Math.PI);
            if (r % 1 != 0 || r < 1) {
                p.innerHTML = 'Please enter a whole number greater than 0';
                console.log("r " + r);
                console.log("area " + area);
            } else {
                p.innerHTML = area;
            }
        }
    </script>
</body>

</html>

上一个答案

有时候ide美化代码错误,

不是因为你写错了,

但是因为你在 javascript 中插入了 html 代码......所以从技术上讲,ide 认为你在编写 js......(结果)

没问题,这里有解决办法

  1. 复制&lt;form&gt;代码
<form>

    ...

</form>
  1. CRTLX复制它

  2. CTRL C 开头(&lt;script&gt; 标签之外)

  3. 尝试删除标签名称与&lt;&gt;之间的空格

这里是代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title> Area of circle </title>
</head>

<body>

    <form id='form1'>
        Type radient of circle:
        <input type="text" name="txtr" size=1 0>
        <br>
        <input type="button" value="Calculate" onClick='CalculateArea()'>
        <p id='area'>
        </p>
    </form>

    <script type="text/javascript">
        function CalculateArea() {

            var r = document.getElementById('form1').value;
            let p = document.getElementById('area')
            var area = (r * r * Math.PI);

            if (r % 1 != 0 || r < 1) {
                p.innerHTML = 'Please enter a whole number greater than 0';
            } else {
                p.innerHTML = area;
            }
        }
    </script>
</body>

</html>

【讨论】:

  • 它还是一样,即使 sn-p 显示相同的错误它可能在这行代码的某个地方 if (r % 1 != 0 || r
  • 使用 console.log(); r 打印undefined@kobibrajant
  • 谢谢帮忙,这不适合我,我放弃了
  • @kobibrajant 很高兴知道,该错误会自动成为一项功能#humorforprogramming
  • 也许这对我有帮助&lt;input type="text" name="txtr" id="r-input" size="10"&gt;var r = document.getElementById('r-input').value;
【解决方案2】:

该元素属于脚本元素之外,在文档中。

<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title> Area of circle </title>
   </head>
   <body>
<form id='form1'>
            Type radient of circle:
            <input type="text" name="txtr" size=10>
            <br>
            <input type="button" value="Calculate" onClick='CalculateArea()'>
            <p id='area'></p>
         </form>
   </body>
   <script type="text/javascript">
       function CalculateArea() {
          var r = document.getElementById('form1').value;
          let p = document.getElementById('area')
          var area = (r * r * Math.PI);
          if (r%1 !=0 || r < 1) p.innerHTML = 'Please enter a whole number greater than 0';
          else p.innerHTML = area;
       }  
   </script>
</html>

【讨论】:

  • 它不再是空白页,但我在输入“请输入大于 0 的整数”的任何数字上都会得到此回报;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
相关资源
最近更新 更多