【问题标题】:memory game in jQuery save image in arrayjQuery中的记忆游戏将图像保存在数组中
【发布时间】: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


【解决方案1】:

在你设置的那一行之后

src = arrStr[i+1]; 

你可以添加行

return src; 

因为您不需要继续执行 for 循环的其余部分

function getFromArray(id)
{
    for(var i = 0 ; i < arrStr.length; i++)
    {
        if( id == arrStr[i])
            {
              var src = arrStr[i+1];
              return src; // this is inserted so that the loop ends after you find the value you are after.
            }
         else{var src = 'null';}         
    }

    return src; // this will only occur if you get to the end of the loop and the value was not found
                // always returns null
}

为了简化功能:

function getFromArray(id)
{
    for(var i = 0 ; i < arrStr.length; i++)
    {
        if( id == arrStr[i])
            {
              var src = arrStr[i+1];
              return src; 
            }      
    }
    return 'null'; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2012-05-05
    • 2011-12-13
    • 2012-05-06
    • 1970-01-01
    相关资源
    最近更新 更多