我需要帮助了解我的js代码出错了。 基本上我有一个画布和一个在画布内反弹的粒子。我想要的是用户在表单中输入数据并提交,然后粒子将以其指定的值开始。
HTML正文:
<canvas id="myCanvas" width="400" height="400"></canvas>
<form id="myForm" >
X Initial:
<input type="text" id="xInit" name="xInit" />
<br/>
Y initial:
<input type="text" id="yInit" name="yInit" />
<br/>
X Velocity:
<input type="text" id="xDir" name="xDir" />
<br/>
Y Velocity:
<input type="text" id="xDir" name="yDir" />
<br/>
Change:
<input type="submit" value="Submit">
</form>
粒子是它自己的类:
function particle(x, y, dX, dY) {
this.x = x;
this.y = y;
this.dX = dX;
this.dY = dY;
this.check = checkCollision;
}
我初始化页面并使用jquery提交表单:
$(document).ready(function(){
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext("2d");
var HEIGHT = 400;
var WIDTH = 400;
var p1, xl, yl, xd, yd;
...More code...
$("form").submit(function(){
xl = +$("#xInit").val();
yl = +$("#yInit").val();
xd = +$("#xDir").val();
yd = +$("#xDir").val();
p1 = new particle(xl,yl,xd,yd);
init();
});
});
然后,我的init()函数调用一个函数draw()来重新绘制一组Interval:
function init() {
draw();
alert(p1.x);
return setInterval(draw, 10);
}
所以当我点击提交时,一切都是最初的,它会将粒子绘制一次,然后它会永远消失。我相信这是因为 var p1,xl,yl,xd,yd; 不断重新声明自己。有没有解决的办法?或者更好的方法来设置它一般? 非常感谢。
返回虚假;部分工作非常赞赏
答案 0 :(得分:2)
当您点击“提交”时,您的表单会被提交。刷新页面,您的变量将被重置。
您必须在false
处理程序中返回submit
以防止:
$("form").submit(function(){
xl = +$("#xInit").val();
yl = +$("#yInit").val();
xd = +$("#xDir").val();
yd = +$("#xDir").val();
p1 = new particle(xl,yl,xd,yd);
init();
return false; // <======
});