Javascript 用给定半径计算周长

Javascript 用给定半径计算周长,javascript,geometry,Javascript,Geometry,我试图通过从绘制圆的给定代码中检索已定义的半径来计算和显示周长。是我输入公式的方式不对,还是需要在同一脚本部分 函数绘图(){ var canvas=document.getElementById('circle'); if(canvas.getContext){ var ctx=canvas.getContext('2d'); var X=画布宽度/2; 变量Y=画布高度/2; var R=45; ctx.beginPath(); 弧(X,Y,R,0,2*Math.PI,false); ct

我试图通过从绘制圆的给定代码中检索已定义的半径来计算和显示周长。是我输入公式的方式不对,还是需要在同一脚本部分

函数绘图(){
var canvas=document.getElementById('circle');
if(canvas.getContext){
var ctx=canvas.getContext('2d');
var X=画布宽度/2;
变量Y=画布高度/2;
var R=45;
ctx.beginPath();
弧(X,Y,R,0,2*Math.PI,false);
ctx.lineWidth=3;
ctx.strokeStyle='#FF0000';
ctx.stroke();
}
}
函数CalculateCircumReference(){
var周长=((2)*(数学Pi)*(R));
}
document.getElementById(“圆周”).innerHTML=圆周

周长:


实际上,数学PI是错误的……您已经编写了math.PI

var circumference = ((2) * (Math.Pi) * (R));
但实际上它是数学

var circumference = ((2) * (Math.PI) * (R));
因此,它返回半径为45的NaN

检查下面的工作代码。。。。您还需要调用CalculateCircumReference函数..并将半径作为参数传递

函数绘图(){
var canvas=document.getElementById('circle');
if(canvas.getContext){
var ctx=canvas.getContext('2d');
var X=画布宽度/2;
变量Y=画布高度/2;
var R=45;
ctx.beginPath();
弧(X,Y,R,0,2*Math.PI,false);
ctx.lineWidth=3;
ctx.strokeStyle='#FF0000';
ctx.stroke();
计算循环差(R);
}
}
函数计算循环差(R){
var周长=((2)*(数学PI)*(R));
document.getElementById(“圆周”).innerHTML=圆周;
}


周长:

您有三个问题:

  • 首先,您需要提供访问
    R
    calculateCircumReference()
    范围。这可以通过从
    draw()
    中调用
    calculateCircumReference()
    并将其作为函数参数传递来实现。您还需要告诉
    calculatecircumference()
    ,它的函数参数应该分配给局部变量
    R
    ,方法是将其写入
    calculatecircumference(R)
  • 其次,
    document.getElementById(“圆周”).innerHTML
    无权访问
    percentral
    的范围。只需运行一行
    document.getElementById(“圆周”).innerHTML=percentry
    line-inside
    caluclatepercentry()
  • 最后,您调用了
    Math.Pi
    ,而不是
    calculateCircumReference()
    中的
    Math.Pi
    PI
    必须是大写
纠正这三个问题可以解决问题,如下所示:

函数绘图(){
var canvas=document.getElementById('circle');
if(canvas.getContext){
var ctx=canvas.getContext('2d');
var X=画布宽度/2;
变量Y=画布高度/2;
var R=45;
ctx.beginPath();
弧(X,Y,R,0,2*Math.PI,false);
ctx.lineWidth=3;
ctx.strokeStyle='#FF0000';
ctx.stroke();
计算循环差(R);
}
}
函数计算循环差(R){
var周长=((2)*(数学PI)*(R));
document.getElementById(“圆周”).innerHTML=圆周;
}

周长:


当前结果是什么..预期结果是什么?可能的重复我希望它显示圆周,当前结果只显示圆。变量
R
在不同的函数中定义,因此在
CalculateCircumReference()中不可见
。将其声明为全局。圆周也是如此。设置
innerHTML
的那一行也需要在函数内部。问题不在于
document.getElementById(“圆周”)
,而是变量
周长
定义在一个从未调用过的函数中。与
CalculateCircumReference()
相同,没有范围查看
draw()中定义的变量
R
。您缺少链…在绘图中调用CalculateCircumReference,,,并在CalculateCircumReference中调用插入…一个相互调用的事件链…希望有帮助:)