Javascript 功能问题

Javascript 功能问题,javascript,Javascript,我是新手。我正在做计算三角形面积的练习,但我有困难。当我运行程序进行计算时,错误显示。解决方案始终显示0。这是我的密码 <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">

我是新手。我正在做计算三角形面积的练习,但我有困难。当我运行程序进行计算时,错误显示。解决方案始终显示0。这是我的密码

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Square Triangle</title>
</head>
<body>
    <p id="solution"></p>
    <input type="text" name="number1" id="number1" placeholder="Enter first value" />
    <input type="text" name="number2" id="number2" placeholder="Enter second value" />
    <input type="text" name="number3" id="number3" placeholder="Enter third value" />
    <input type="button" value="Click to calc" onclick="calculateTriangleSquare()"/>
    <script>
            const a = document.getElementById("number1").value;
            const b = document.getElementById("number2").value;
            const c = document.getElementById("number3").value;
        function calculateTriangleSquare() {
            let p = (a + b + c) / 2;
            let S = Math.sqrt(p*(p-a)*(p-b)*(p-c));
            document.getElementById("solution").innerHTML = S;
        }
    </script>
</body>
</html> 

直角三角形

常量a=document.getElementById(“number1”).value; 常量b=document.getElementById(“number2”).value; const c=document.getElementById(“number3”).value; 函数calculaterAngleSquare(){ 设p=(a+b+c)/2; 设S=数学sqrt(p*(p-a)*(p-b)*(p-c)); document.getElementById(“解决方案”).innerHTML=S; }
如何修复它。请帮帮我。非常感谢你。 对不起我的英语。

你有两个错误

  • 调用函数时,您没有获取输入值。您不希望访问函数外部的值
  • 您没有将值解析为整数。它们被连接起来,然后除以2,因此
    p
    将等于
    '000'/2=0
  • 函数calculateTriangleSquare(){
    常量a=parseInt(document.getElementById(“number1”).value,10);
    const b=parseInt(document.getElementById(“number2”).value,10);
    const c=parseInt(document.getElementById(“number3”).value,10);
    设p=(a+b+c)/2;
    设S=Math.sqrt(p*(p-a)*(p-b)*(p-c));
    document.getElementById(“解决方案”).innerHTML=S;
    }


    问题在于,当页面完成加载时,您会从输入中获取值。在其中任何一个中输入值后,a、b和c的值都不会更新。您应该从calculateTriangleSquare函数的输入中获取值,并将其解析为数字:

    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Square Triangle</title>
      </head>
      <body>
        <p id="solution"></p>
        <input type="text" name="number1" id="number1" placeholder="Enter first value" />
        <input type="text" name="number2" id="number2" placeholder="Enter second value" />
        <input type="text" name="number3" id="number3" placeholder="Enter third value" />
        <input type="button" value="Click to calc" onclick="calculateTriangleSquare()" />
        <script>
          const aInput = document.getElementById('number1');
          const bInput = document.getElementById('number2');
          const cInput = document.getElementById('number3');
          function calculateTriangleSquare() {
            const [a, b, c] = [aInput, bInput, cInput].map((el) => +el.value);
            const p = (a + b + c) / 2;
            const S = Math.sqrt(p * (p - a) * (p - b) * (p - c));
            document.getElementById('solution').innerHTML = S;
          }
        </script>
      </body>
    </html>
    
    
    直角三角形
    

    const aInput=document.getElementById('number1'); const bInput=document.getElementById('number2'); const cInput=document.getElementById('number3'); 函数calculaterAngleSquare(){ 常数[a,b,c]=[aInput,bInput,cInput].map((el)=>+el.value); 常数p=(a+b+c)/2; 常数S=数学sqrt(p*(p-a)*(p-b)*(p-c)); document.getElementById('solution').innerHTML=S; }
    您的代码有一些小问题,但我会向您解释

  • 你的a,b,c不能是0以外的东西,因为它们是第一个常量,第二个是在函数被调用后,但只有在调用之前,你才改变a,b,c的值。调用函数时需要刷新值
  • 
    直角三角形
    

    函数calculaterAngleSquare(){ 设a=document.getElementById(“number1”).value; 设b=document.getElementById(“number2”).value; 设c=document.getElementById(“number3”).value; 设p=(a+b+c)/2; 设S=数学sqrt(p*(p-a)*(p-b)*(p-c)); document.getElementById(“解决方案”).innerHTML=S; }
    在进行计算时尝试输出值,也可以使用console.log检查WOW。我明白了。非常感谢你,你太棒了!谢谢你支持我解决我的问题!