【发布时间】:2015-07-05 17:02:54
【问题描述】:
我正在使用 jQuery 创建记忆游戏,我的问题是一件特定的事情,我找不到我错在哪里。
我的构建方式: 所有图片都有默认src值,点击后src改变,如果点击的两张图片不相同,则返回默认src值。
问题是: 在默认 src 值返回后,当我再次单击图像时,最后显示的 src 应该从数组中检索,但它会显示另一个随机图像。
这是相关代码
var imgArr1 = ["images/skinny-unicorn.png", "images/all-757448_640.jpg", "images/alm-770667_640.jpg", "images/audi-798530_640.jpg", "images/landscape-691462_640.jpg", "images/skinny-unicorn.png", "images/all-757448_640.jpg", "images/alm-770667_640.jpg", "images/audi-798530_640.jpg", "images/landscape-691462_640.jpg"];
var arrStr = [32];
$('.img').click(function(){
//var openCount = openCardCount();
var id = $(this).attr("id");
if(getFromArray(id) != 'null')
{
var oldSrc = getFromArray(id);
$('#' + id).attr('src',oldSrc);
}
else
{
var src = $(this).attr("src");
if(src == "images/back.png")
{
$('#' + id).attr('src',ChangeFirstArray());
}
var openCard = openCardCount();
if(openCard == 1)
{
storeInArray(id,src);
$(".img").attr("src","images/back.png");
}
}
});
/* create an array of id and src that as been allready clicked once */
function storeInArray(id,src)
{
for(var i = 0 ; i < arrStr.length; i++)
{
if(arrStr[i] == "")
{
arrStr[i] = id;
arrStr[i+1] = src;
}
}
}
/* check if there is old image on this id, return the src if there is one, if not return null */
function getFromArray(id)
{
for(var i = 0 ; i < arrStr.length; i++)
{
if( id == arrStr[i])
var src = arrStr[i+1];
var src = 'null';
}
return src;
}
更新getFromArray函数,问题依旧存在
function getFromArray(id)
{
for(var i = 0 ; i < arrStr.length; i++)
{
if( id == arrStr[i])
{
var src = arrStr[i+1];
}
else{var src = 'null';}
}
return src;
}
【问题讨论】:
-
in
getFromArray为什么在将arrStr[i+1]设置为'null'后重新声明'null'? -
null为else语句,如果id不等于arrStr[i],则src为null
-
是的,但如果它是相等,那么在设置为
arrStr[i+1]之后,它将再次设置为'null'。因此getFromArray将始终返回'null' -
我做了你告诉我的改变,问题仍然存在。
标签: javascript jquery arrays