Javascript 尝试使用JQuery在数组中保存x和y坐标时未定义

Javascript 尝试使用JQuery在数组中保存x和y坐标时未定义,javascript,jquery,arrays,Javascript,Jquery,Arrays,我正在用Raphaeljs库绘制直线,我想存储直线起点和终点的坐标,但我无法获得正确的语法 这是代码的一部分: $(document).ready(function () { var startX = new Array(); var startY = new Array(); var endX = new Array(); var endY = new Array();

我正在用Raphaeljs库绘制直线,我想存储直线起点和终点的坐标,但我无法获得正确的语法

这是代码的一部分:

     $(document).ready(function () {

            var startX = new Array();
            var startY = new Array();
            var endX = new Array();
            var endY = new Array();


            $('input[type="checkbox"][name="check"]').change(function () {
                // proceed only when checked
                if (this.checked) {
                    drawLine();
                }
            });
        });


        function drawLine() {

            var linewidth = $("#width").val();
            var color = $("#background").val();

            function Line(startX, startY, endX, endY, raphael) {

                for(var i=0; i< 25; i++) {
                    var start = {
                        x: startX[i],
                        y: startY[i]

                    };
                    var end = {

                        x: endX[i],
                        y: endY[i]


                    };

                    console.log(startX[i],startY[i]);
                    console.log(endX[i],endY[i]);

                }



                var getPath = function () {
                    return "M" + start.x + " " + start.y + " L" + end.x + " " + end.y;
                };


                var redraw = function () {
                    node.attr("path", getPath());
                };

                node = raphael.path(getPath());


                node.attr("stroke-width", linewidth); //sets the width of the line
                node.attr("stroke", color);

                startx = (node.getBBox().x);
                starty = (node.getBBox().y);
                //console.log(startx , starty);

                //sets the color of the line

                return {
                    updateStart: function (x, y) {
                        start.x = x;
                        start.y = y;
                        redraw();
                        return this;
                    },
                    updateEnd: function (x, y) {
                        end.x = x;
                        end.y = y;
                        redraw();
                        return this;
                    }
                };
            }


            $(document).ready(function () {

                var pathLength = 0;
                var paper = Raphael("droppable", 1280, 470, 0, 0);
                $("#droppable").mousedown(
                        function (e) {
                            x = e.offsetX;
                            y = e.offsetY;
                            line = Line(x, y, x, y, paper);
                            $("#droppable").bind('mousemove', function (e) {
                                x = e.offsetX;
                                y = e.offsetY;


                                line.updateEnd(x, y);


                            });

                        });

                $("#droppable").mouseup(
                        function (e) {
                            $("#droppable").unbind('mousemove');
                        });
});
        }
$(文档).ready(函数(){
var startX=新数组();
var startY=新数组();
var endX=新数组();
var endY=新数组();
$('input[type=“checkbox”][name=“check”]')。更改(函数(){
//仅在选中时继续
如果(选中此项){
抽绳();
}
});
});
函数drawLine(){
var linewidth=$(“#width”).val();
var color=$(“#背景”).val();
功能线(startX、startY、endX、endY、拉斐尔){
对于(变量i=0;i<25;i++){
变量开始={
x:startX[i],
y:startY[i]
};
变量结束={
x:endX[i],
y:endY[i]
};
console.log(startX[i],startY[i]);
console.log(endX[i],endY[i]);
}
var getPath=函数(){
返回“M”+start.x+“”+start.y+“L”+end.x+“”+end.y;
};
var redraw=函数(){
attr(“path”,getPath());
};
node=raphael.path(getPath());
node.attr(“笔划宽度”,线宽);//设置线条的宽度
node.attr(“笔划”,颜色);
startx=(node.getBBox().x);
starty=(node.getBBox().y);
//控制台日志(startx、starty);
//设置线条的颜色
返回{
updateStart:函数(x,y){
start.x=x;
start.y=y;
重画();
归还这个;
},
更新:函数(x,y){
结束。x=x;
结束y=y;
重画();
归还这个;
}
};
}
$(文档).ready(函数(){
var路径长度=0;
var paper=Raphael(“可下拉”,1280470,0,0);
$(“#可拖放”).mousedown(
职能(e){
x=e.offsetX;
y=e.offsetY;
行=行(x,y,x,y,纸张);
$(“#可拖放”).bind('mousemove',函数(e){
x=e.offsetX;
y=e.offsetY;
行更新(x,y);
});
});
$(“#可拖放”).mouseup(
职能(e){
$(“#可拖放”).unbind('mousemove');
});
});
}

在控制台日志中,我正在获取未定义的信息,并且错误消息
uncaughttypeerror:cannotread属性“0”of undefined
您正在将
整数
传递到
函数中,而该函数需要
数组
。然后尝试访问
startX[i]
函数中预期数组的第一个元素。您没有将代码顶部声明的数组用于任何用途。数组也是空的,因此即使您将它们传递到
行而不是整数中,代码也不会工作,因为没有任何元素可引用。

如果您
console.log(startX)
函数的内部和外部是否有值?如何调用
?您没有为开始创建的数组分配任何值。因此,例如,当您调用
startX[i]
时,它试图查找
startX[0]
,但没有找到任何值。我将其更改为:
var startX=new Array()
,但仍然得到相同的错误@爱斯基摩人我试着把它放在外面,但它给了我同样的错误信息。Line在另一个名为drawLine()的函数中,后者是使用按钮id调用的。@eskimo它适用于单个坐标,但在数组中保存时不适用。