Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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
Javascript 运行函数时出错_Javascript_Shape_Shapes - Fatal编程技术网

Javascript 运行函数时出错

Javascript 运行函数时出错,javascript,shape,shapes,Javascript,Shape,Shapes,我必须删除画布中的一个形状 编写了以下代码- function deleteCircle(circle, propName) { for( i = 0; i < circle.length; i++) { circle[i].erase(); } } circle.prototype.erase=function() { delete this; } 函数deleteCircle(圆,propNam

我必须删除画布中的一个形状

编写了以下代码-

  function deleteCircle(circle, propName) {
      for( i = 0; i < circle.length; i++) {
        circle[i].erase();      
      }
    }
   circle.prototype.erase=function() {
      delete this;
    }
函数deleteCircle(圆,propName){
对于(i=0;i
当我以i=0运行此代码时,它将进入擦除功能。 但在第一次删除之后,它不会返回deletecircle。
这只是一个粗略的代码。。。我只是觉得删除这个之后。。。。即删除对象后,代码是否返回deletecircle?

您的circle对象没有
擦除方法。在您的情况下,
擦除
是独立的功能,不会像这样工作。

正如其他用户所说,在循环过程中修改数组的大小是个坏主意。 尝试:

编辑:抱歉,没有注意到您更改了代码。更新:

function circle(){};
circle.prototype.erase = function(){
    delete this;
}

var circles = [new circle, new circle, new circle];

function deleteCircle(circle, propName) {
    while(circle.length!==0){
        circle.pop().erase();
    }
}

function circle(){}; //or however you define your class
circle.prototype.erase = function(){ //extend the class
    delete this;
}

var circles = [new circle, new circle, new circle]; //your array

function deleteCircle(circle, propName) {
    while(circle.length!==0){
        circle.pop().erase();
    }
}

alert(circles.length);
deleteCircle(circles,null);
alert(circles.length);

我假设在
erase()
处发生了一个错误,这会阻止循环继续。你检查错误日志了吗?你正在修改循环中数组的长度-这是个坏主意。嘿,没有错误。只有一个圆圈被删除。我想让for循环一直工作到所有圆都被删除为止。但是用这个代码。只有1个正在删除我在我的圆圈对象中设置了擦除功能。我已经编辑了代码。请查收
function circle(){};
circle.prototype.erase = function(){
    delete this;
}

var circles = [new circle, new circle, new circle];

function deleteCircle(circle, propName) {
    while(circle.length!==0){
        circle.pop().erase();
    }
}

function circle(){}; //or however you define your class
circle.prototype.erase = function(){ //extend the class
    delete this;
}

var circles = [new circle, new circle, new circle]; //your array

function deleteCircle(circle, propName) {
    while(circle.length!==0){
        circle.pop().erase();
    }
}

alert(circles.length);
deleteCircle(circles,null);
alert(circles.length);