Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HTML/Javascript绘制椭圆形_Javascript_Html_Canvas_Parseint - Fatal编程技术网

使用HTML/Javascript绘制椭圆形

使用HTML/Javascript绘制椭圆形,javascript,html,canvas,parseint,Javascript,Html,Canvas,Parseint,我正在为班级制作一个网站,我们应该传递关于长轴和短轴的论点。我可以传递它,但我不能将它转换为int。我已经阅读了关于它的每一篇文章,因此我可以找到它,我知道我需要使用vr major=parseInt(),但是当我这样做时,我的椭圆曲线中没有任何内容。如果您查看下面的代码,您将看到我调用了两次parseInt,但当我将它们放入对drawerlipse()的调用中时,它不会绘制任何内容(与我在调用中保留硬编码值时相反,它确实按预期绘制。有人能帮我吗?谢谢!为了可读性,一些代码已被编辑,但与函数无关

我正在为班级制作一个网站,我们应该传递关于长轴和短轴的论点。我可以传递它,但我不能将它转换为int。我已经阅读了关于它的每一篇文章,因此我可以找到它,我知道我需要使用vr major=parseInt(),但是当我这样做时,我的椭圆曲线中没有任何内容。如果您查看下面的代码,您将看到我调用了两次parseInt,但当我将它们放入对drawerlipse()的调用中时,它不会绘制任何内容(与我在调用中保留硬编码值时相反,它确实按预期绘制。有人能帮我吗?谢谢!为了可读性,一些代码已被编辑,但与函数无关

代码是:


长轴:
短轴:

var major=parseInt(MajorAxis); var minor=parseInt(MinorAxis); var canvas=document.getElementById('thecanvas'); if(canvas.getContext){ var ctx=canvas.getContext('2d'); 抽屉式(ctx,10,10,100,60); } 功能抽屉式电子显示屏中心(ctx、cx、cy、w、h){ 抽屉(ctx,cx-w/2.0,cy-h/2.0,w,h); } 功能抽屉(ctx、x、y、w、h){ var kappa=.5522848, ox=(w/2)*卡帕,//控制点偏移水平 oy=(h/2)*卡帕,//控制点垂直偏移 xe=x+w,//x-end ye=y+h,//y端 xm=x+w/2,//x-middle ym=y+h/2;//y-中间 ctx.beginPath(); ctx.moveTo(x,ym); 贝塞尔曲线(x,ym-oy,xm-ox,y,xm,y); 贝塞尔曲线(xm+ox,y,xe,ym-oy,xe,ym); ctx.bezierCurveTo(xe,ym+oy,xm+ox,ye,xm,ye); 贝塞尔曲线(xm-ox,ye,x,ym+oy,x,ym); ctx.stroke(); }

页脚: //当页面加载时,将整个url放入内部文本中。 document.getElementById(“EntireURL”).innerHTML=window.location.href; //获取名字和姓氏并将其放入页面 document.getElementById(“MajorAxis”).innerHTML=getParameterByName(“MajorAxis”); document.getElementById(“MinorAxis”).innerHTML=getParameterByName(“MinorAxis”); //从stackoverflow获得:http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript 函数getParameterByName(名称、url){ 如果(!url)url=window.location.href; name=name.replace(/[\[\]]/g,\\$&); var regex=new RegExp(“[?&]”+name+”(=([^&#]*)和|#|$), 结果=regex.exec(url); 如果(!results)返回null; 如果(!results[2])返回“”; 返回组件(结果[2]。替换(/\+/g,”); var major=parseInt(MajorAxis); var minor=parseInt(MinorAxis); }
您的代码有几个问题

  • 函数
    getParametersByName
    正在设置局部变量
    major
    minor
    。不仅这些局部变量在函数外部不可访问,而且此代码在
    return
    语句之后,因此永远不会执行
  • 该函数用于从URL查询字符串中获取值。是否在querystring中传递值
  • 在我看来,
    major
    minor
    (以下)的初始赋值似乎应该调用
    getParametersByName
    ,而不是
    parseInt

    var major=parseInt(MajorAxis);

    var minor=parseInt(MinorAxis);

  • MajorAxis
    MinorAccess
    应该定义为javascript中的变量,如果您打算按原样使用它们的话

您需要清楚地知道从何处获取值(查询字符串、标记,以前存储在变量中)。此外,您可能会对何时执行感到困惑。我之所以这么说,是因为我注意到您的代码在第一个脚本块中执行,然后在第二个脚本块中再次执行。我意识到您正在学习


我可以给出更多的建议,但看看您是否能从我提供的内容中找到答案。

代码中的两个主要问题阻止了它的工作

  • 执行顺序不正确。第一个脚本元素在第二个脚本元素之前执行,并尝试从span元素中获取值。第二个脚本随后执行,并在span元素中设置值。因此,请将第一个脚本元素放置在第二个脚本元素之后,以在检索它们之前设置span内容-或者同时执行这两个脚本元素在窗口完成加载后,请更正顺序

  • parseInt(MajorAxis)
    parseInt(MinorAxis)
    使用访问HTMLPanelElements。仍然需要访问元素的文本内容,例如使用
    parseInt(MajorAxis.textContent)
    parseInt(MinorAxis.textContent)

  • 在窗口对象上使用命名访问是由Microsoft IE引入的,有些人认为这是不安全的或糟糕的编码方式


    如果您解决了这两个问题,代码应该可以运行。如果您希望修改元素的访问方式并删除未使用的变量声明,则由您决定。

    MajorAxis和MinorAxis是标记中的ID,但您在parseInt调用中使用它们,就像它们是javascript变量一样。这意味着您传递给parseInt的是实际的未定义。这就是为什么它在放入硬编码值时有效,但不使用(未定义)变量。我以前从未使用过javascript,也没有使用过任何与web相关的东西。我明白你所说的未定义。这是有道理的。那么我如何正确读取这些值?@isherwoo