Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 Can';t第二次读取未定义的属性_Javascript_Jquery_Arrays_Jquery Ui - Fatal编程技术网

Javascript Can';t第二次读取未定义的属性

Javascript Can';t第二次读取未定义的属性,javascript,jquery,arrays,jquery-ui,Javascript,Jquery,Arrays,Jquery Ui,我在制作纸牌游戏时遇到了一些问题 我正在处理剩余的牌组,点击后会显示剩余的牌组,所以玩家可以在点击牌组的同时循环使用它们 问题本身:当您单击deck时,代码生成一个图片文件名,其中包含来自2个不同数组的参数 第一次单击后,卡将显示,没有任何错误,但当尝试第二次单击时,会出现错误:“无法读取未定义的属性'Taskai' 代码: $.widget(“Game.remaingdeck”{ 选项:{ 剩余甲板:[] }, _创建:函数(){ var博弈=此; game.flipACard(); }, f

我在制作纸牌游戏时遇到了一些问题

我正在处理剩余的牌组,点击后会显示剩余的牌组,所以玩家可以在点击牌组的同时循环使用它们

问题本身:当您单击deck时,代码生成一个图片文件名,其中包含来自2个不同数组的参数

第一次单击后,卡将显示,没有任何错误,但当尝试第二次单击时,会出现错误:“无法读取未定义的属性'Taskai'

代码:

$.widget(“Game.remaingdeck”{
选项:{
剩余甲板:[]
},
_创建:函数(){
var博弈=此;
game.flipACard();
},
flipACard:函数(){
var i=0;
var博弈=此;
$(“#remDeck”)。单击(函数(){
var remainDeck=game.options.remainingDeck;
var remDeck=$(“#remDeck”);
var oppenedCard=$(“#openCard”);
var卡=$('');
var imageName=remainDeck[i].Taskai+''u of_'+remainDeck[i].Simbolis+'.png';
var imagePath='texture/'+imageName;
css('background-image','url('+imagePath+');
如果(i=game.options.remainingDeck.lenght){
aler(“kaladëprasieda iðnaujo”);
}
i++;
对方卡片追加(卡片);
});
}
})

i
需要是外部变量,否则每次单击处理程序运行时它都是
0

另外,我认为不应该在
.flipcard()
中附加单击处理程序,否则每次运行
flipcard()
时,它都会被反复附加。尝试在
.create()
中附加单击处理程序

$.widget(“Game.remaingdeck”{
选项:{
剩余甲板:[]
},
_创建:函数(){
var博弈=此;
var i=0;
$(“#remDeck”)。在('click',function()上{
$(“#openCard”).append($('').css($('.css('background-image','url('texture/'+game.options.remainingDeck[i].Taskai+'.'u of_'+game.options.remainingDeck[i].Simbolis+'.png'));
if(i==game.options.remainingDeck.length){
警惕(“卡拉德·普拉西德达·伊奥纳霍”);
}
i++;
});
这是flipACard();
},
flipACard:函数(){
$(“#remDeck”)。单击();
}
})

你大概是在某个时候把
.pop()
(或
.shift()
)卡从
剩余的卡片上取下来的吧?您可以在翻转时执行此操作,在这种情况下,
i
计数器是不必要的。

“如果(i=game.options.remainingDeck.lenght){”--我在这里看到两个错误,第一个是比较时应该使用==或===第二个是:长度而不是长度。修复它们并重试?代码没有在任何地方定义Taskai。请不要在每个句子开头都使用So;)点击F12并修复几个控制台errors@krankuba第一个不是问题,但是第二个is@krankuba斯波TET-如果(i=something)
输入错误是一个有效的测试,如果你想在某个错误时输入false并将其分配给
i
。另外,alert拼写错误。你还有一个
aler(“kaladëprasideda iðnaujo”)
im它应该是一个
警报

$.widget("Game.RemainingDeck", {
    options: {
        remainingDeck: []
    },
    _create: function() {
        var game = this;
        var i = 0;
        $("#remDeck").on('click', function() {
            $('#openCard').append($('<div class=" card"></div>').css('background-image', 'url("texture/' + game.options.remainingDeck[i].Taskai + '_of_' + game.options.remainingDeck[i].Simbolis + '.png")'));
            if(i === game.options.remainingDeck.length) {
                alert("kaladë prasideda ið naujo");
            }
            i++;
        });
        this.flipACard();
    },
    flipACard: function() {
        $("#remDeck").click();
    }
})