使用HTML/Javascript绘制椭圆形
我正在为班级制作一个网站,我们应该传递关于长轴和短轴的论点。我可以传递它,但我不能将它转换为int。我已经阅读了关于它的每一篇文章,因此我可以找到它,我知道我需要使用vr major=parseInt(),但是当我这样做时,我的椭圆曲线中没有任何内容。如果您查看下面的代码,您将看到我调用了两次parseInt,但当我将它们放入对drawerlipse()的调用中时,它不会绘制任何内容(与我在调用中保留硬编码值时相反,它确实按预期绘制。有人能帮我吗?谢谢!为了可读性,一些代码已被编辑,但与函数无关 代码是:使用HTML/Javascript绘制椭圆形,javascript,html,canvas,parseint,Javascript,Html,Canvas,Parseint,我正在为班级制作一个网站,我们应该传递关于长轴和短轴的论点。我可以传递它,但我不能将它转换为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
应该定义为javascript中的变量,如果您打算按原样使用它们的话MinorAccess
我可以给出更多的建议,但看看您是否能从我提供的内容中找到答案。代码中的两个主要问题阻止了它的工作
parseInt(MajorAxis)
和parseInt(MinorAxis)
使用访问HTMLPanelElements。仍然需要访问元素的文本内容,例如使用parseInt(MajorAxis.textContent)
和parseInt(MinorAxis.textContent)
如果您解决了这两个问题,代码应该可以运行。如果您希望修改元素的访问方式并删除未使用的变量声明,则由您决定。MajorAxis和MinorAxis是标记中的ID,但您在parseInt调用中使用它们,就像它们是javascript变量一样。这意味着您传递给parseInt的是实际的未定义。这就是为什么它在放入硬编码值时有效,但不使用(未定义)变量。我以前从未使用过javascript,也没有使用过任何与web相关的东西。我明白你所说的未定义。这是有道理的。那么我如何正确读取这些值?@isherwoo