Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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_Jquery - Fatal编程技术网

Javascript函数保持指数级循环…为什么?

Javascript函数保持指数级循环…为什么?,javascript,jquery,Javascript,Jquery,我有一个javascript/jquery脚本,它试图模拟威斯康星卡片排序任务(猜测匹配的卡片规则),但从试用版3开始,它一直以指数形式显示。请参阅控制台日志的结果,fiddle的第21行。怎么了 在这里拉小提琴: var posfeed=“Right!”; var negfeed=“错误!”; 风险值试验=['GreenTriangle1'、'GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2'、'RedCross

我有一个javascript/jquery脚本,它试图模拟威斯康星卡片排序任务(猜测匹配的卡片规则),但从试用版3开始,它一直以指数形式显示。请参阅控制台日志的结果,fiddle的第21行。怎么了

在这里拉小提琴:

var posfeed=“Right!”;
var negfeed=“错误!”;
风险值试验=['GreenTriangle1'、'GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2'、'RedCross4*GreenStar2*RedTriangle1*YellowCross3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2'、'RedCross4*GreenStar2*RedTriangle1*YellowCross3*BlueCircle4*2'、'BlueTriangle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2',“黄色交叉1*红色三角形1*绿色星形2*黄色交叉3*蓝色圆圈4*3”、“蓝色三角形4*红色三角形1*绿色星形2*黄色交叉3*蓝色圆圈4*4”、“红色圆圈3*红色三角形1*绿色星形2*黄色交叉3*蓝色圆圈4*1”、“绿色交叉4*红色三角形1*绿色星形2*黄色交叉3*蓝色圆圈4*2”、“黄色圆圈2*红色三角形1*绿色星形2*黄色交叉3*蓝色圆圈4*3”、“绿色三角形1”*红三角1*绿三角2*黄三角3*蓝圈4*1',红三角2*绿三角1*黄三角3*蓝圈4*3',蓝三角2*红三角1*绿三角2*黄三角3*蓝圈4*1',红圈1*红三角1*绿三角2*黄三角3*蓝圈4*4',绿三角4*红三角1*绿三角2*黄三角3*蓝圈4*2',黄三角1*红三角1*绿tar2*YellowCross3*BlueCircle4*3'、BlueTriangle4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1'、RedCircle3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4'、GreenCross4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4*4'、GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle1*GreenStar2*oss3*蓝圈4*1'、'红圈4*绿圈2*红三角1*黄圈3*蓝圈4*4'、'蓝三角2*红三角1*绿圈2*黄圈3*蓝圈4*2'、'红圈1*红三角1*绿圈2*黄圈3*蓝圈4*1'、'绿圈4*红三角1*绿圈2*黄圈3*蓝圈4'、'黄圈1*红三角1*绿圈2*黄圈3*1',“蓝三角4*红三角1*绿三角2*黄十字3*蓝圈4*4”、“红三角3*红三角1*绿三角2*黄十字3*蓝圈4*3”、“绿十字4*红三角1*绿十字2*黄十字3*蓝圈4*4”、“黄十字2*红三角1*绿十字2*黄十字3*蓝圈4*2”、“绿三角1*红三角1*绿十字2*黄十字3*蓝圈4*2”、“红十字4*2”eenStar2*红三角1*黄三角3*蓝圈4*2',蓝三角2*红三角1*绿星2*黄三角3*蓝圈4*4',红圈1*红三角1*绿星2*黄十字3*蓝圈4*1',绿星4*红三角1*绿星2*黄十字3*蓝圈4*2',黄三角1*红三角1*绿星2*黄十字3*蓝圈4*3',蓝三角1*红三角1*绿星1*Star2*YellowCross3*BlueCircle4*4',RedCircle3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1',GreenCross4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2',YellowCross2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*GreenStar2',RedCross4*GreenStar2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1*1*YellowCrosss3*蓝色圆圈4*3'、'蓝色三角形2*红色三角形1*绿色星星2*黄色十字3*蓝色圆圈4*1'、'红色圆圈1*红色三角形1*绿色星星2*黄色十字3*蓝色圆圈4*4'、'绿色星星4*红色三角形1*绿色星星2*黄色十字3*蓝色圆圈4*2'、'黄色十字1*红色三角形1*绿色星星2*黄色十字3*蓝色圆圈4*3'、'蓝色三角形4*红色星星1*绿色星星2*黄色十字3*蓝色圆圈4*1'“红圈3*红圈1*绿圈2*黄圈3*蓝圈4*4”、“绿圈4*红圈1*绿圈2*黄圈3*蓝圈4*3”、“黄圈2*红圈1*绿圈2*黄圈3*蓝圈4*4”、“绿圈1*红圈1*绿圈2*黄圈3*蓝圈4*1”、“红圈4*绿圈2*红圈1*红圈1*黄圈4*4”、“蓝三角2”*红三角1*绿星2*黄十字3*蓝圈4*2',红圈1*红三角1*绿星2*黄十字3*蓝圈4*1',绿星4*红三角1*绿星2*黄十字3*蓝圈4*4',黄十字1*红三角1*绿星2*黄十字3*蓝圈4*1',蓝三角4*红三角1*绿星2*黄十字3*蓝圈4*4',红圈3*红三角1*绿星tar2*黄色交叉3*蓝色圆圈4*3',“绿色交叉4*红色三角形1*绿色tar2*黄色交叉3*蓝色圆圈4*4',“黄色圆圈2*红色三角形1*绿色tar2*黄色交叉3*蓝色圆圈4*2'];
var-resp;
var选择;
var-fol=0;
var i=1;
$(函数(){
$(“#提要”).bind(“点击”,函数(){
$(“#提要”)。取消绑定(“单击”);
$(“#feed”).html(“片刻…”);
分配(i,fol);
});
}); 
功能分配(一、二){
log('fol是'+fol+',i是'+i');
如果(fol>=4&&i=4&&i11){i=21;}
如果(fol>=4&&i21){i=31;}
如果(fol>=4&&i31){i=41;}
如果(fol>=4&&i41){i=51;}

如果(fol>=4&&i>50&&i在每次调用
Display
时,您都会在图像上重新绑定单击处理程序-基本上每次都会添加一个新的单击处理程序。这些处理程序中的每一个都会在随后的每次单击中被调用。也就是说,单击一张卡,会在每张卡上添加一个单击处理程序…对于卡上的每个单击处理程序。您应该只调用
显示
一次,而不是每次分发新卡时。由于处理程序位于包含元素上,因此尽管更改了其中的图像,它仍将激发

我冒昧地更新了您的代码,不使用全局变量,只设置了一次处理程序。它使用数据值来保存当前值,而不是全局数据


请参见

Love down投票者,他们不愿意解释。非常有用……哇,谢谢你发现了我愚蠢的错误。你的回答真的很准确。我非常喜欢在
img
中添加数据,然后在find函数中使用它。没想到这一点,非常聪明。
var posfeed = "Right!";
var negfeed = "Wrong!";

var trials = ['GreenTriangle1','GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'RedCross4*GreenStar2*RedTriangle1*YellowCross3*BlueCircle4*2', 'BlueTriangle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'RedCircle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'GreenStar4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'YellowCross1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'BlueTriangle4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'RedCircle3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'GreenCross4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'YellowCircle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'RedCross4*GreenStar2*RedTriangle1*YellowCross3*BlueCircle4*3', 'BlueTriangle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'RedCircle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'GreenStar4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'YellowCross1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'BlueTriangle4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'RedCircle3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'GreenCross4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'YellowCircle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'RedCross4*GreenStar2*RedTriangle1*YellowCross3*BlueCircle4*4', 'BlueTriangle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'RedCircle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'GreenStar4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'YellowCross1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'BlueTriangle4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'RedCircle3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'GreenCross4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'YellowCircle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2','GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'RedCross4*GreenStar2*RedTriangle1*YellowCross3*BlueCircle4*2', 'BlueTriangle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'RedCircle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'GreenStar4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'YellowCross1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'BlueTriangle4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'RedCircle3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'GreenCross4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'YellowCircle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'RedCross4*GreenStar2*RedTriangle1*YellowCross3*BlueCircle4*3', 'BlueTriangle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'RedCircle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'GreenStar4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'YellowCross1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'BlueTriangle4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'RedCircle3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'GreenCross4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'YellowCircle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'GreenTriangle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'RedCross4*GreenStar2*RedTriangle1*YellowCross3*BlueCircle4*4', 'BlueTriangle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2', 'RedCircle1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'GreenStar4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'YellowCross1*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*1', 'BlueTriangle4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'RedCircle3*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*3', 'GreenCross4*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*4', 'YellowCircle2*RedTriangle1*GreenStar2*YellowCross3*BlueCircle4*2'];

var resp;
var choice;
var fol = 0;
var i = 1;

$(function() {
        $("#feed").bind("click tap", function () {
            $("#feed").unbind("click");
            $("#feed").html("One moment...");
            Distribute(i, fol);
        });
    }); 

function Distribute(i, fol) {

    console.log('fol is ' + fol + ' and i is ' + i);

    if (fol >=4 && i<=10) {i=11;}
    if (fol >=4 && i<=20 && i>11) {i=21;}
    if (fol >=4 && i<=30 && i>21) {i=31;}
    if (fol >=4 && i<=40 && i>31) {i=41;}
    if (fol >=4 && i<=50 && i>41) {i=51;}
            if (fol >=4 && i > 50 && i<=60) {$("#feed").html("Task is over!");}
        if (fol < 4 && i==10) {i=1;}
        if (fol < 4 && i==20) {i=11;}
        if (fol < 4 && i==30) {i=21;}
        if (fol < 4 && i==40) {i=31;}
        if (fol < 4 && i==50) {i=41;}
        if (fol < 4 && i==60) {i=51;}
    setTimeout(function() {
            $('#feed').html('');
    var cur_trial = trials[i];
    var symb = cur_trial.split("*");

    $('#img1').html('<img src="CardSortTest/' + symb[1] + '.jpg" />');
    $('#img2').html('<img src="CardSortTest/' + symb[2] + '.jpg" />');
    $('#img3').html('<img src="CardSortTest/' + symb[3] + '.jpg" />');
    $('#img4').html('<img src="CardSortTest/' + symb[4] + '.jpg" />');
    $('#target').html('<img src="CardSortTest/' + symb[0] + '.jpg" />');
    resp=symb[5];
    Display(i, fol);
        },1500);
}

function Display(i, fol) {
                $("#img1").bind("click tap", function () {
                   choice = 1;
                    CheckResp(choice, i, fol);
                  // $("#img1").unbind("click");
            });
            $("#img2").bind("click tap", function () {
                   choice = 2;
                    CheckResp(choice, i, fol);
                   //$("#img2").unbind("click");
            });
            $("#img3").bind("click tap", function () {
                   choice = 3;
                    CheckResp(choice, i, fol);
                 // $("#img3").unbind("click");
            });
            $("#img4").bind("click tap", function () {
                   choice = 4;
                    CheckResp(choice, i, fol);
                 // $("#img4").unbind("click");
            });
        }


function CheckResp(gresp, i, fol) {
    $("#target").html('');
        i++;
    if (gresp == resp) {
    fol++;
            $("#feed").html(posfeed).promise().done(function(){ Distribute(i, fol); });
        }
    else { 
            $("#feed").html(negfeed).promise().done(function(){ Distribute(i, 0); });
        }

}