2015-07-05 57 views
0

我正在使用jQuery創建記憶遊戲,我的問題是一個特定的事情,我沒有找到我錯在哪裏。在jQuery中的記憶遊戲在數組中保存圖像

我的方式建造它: 所有圖片都有默認的src值,之後點擊的SRC變化,如果點擊了兩個圖像是不一樣的,默認SRC價值迴歸。

的問題是: 的defualt SRC價值迴歸後,當我再次點擊圖片,最後顯示SRC應該從陣列retrive,但其顯示antoher隨機圖像來代替。

這是培訓相關代碼

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; 
} 
+0

你爲什麼要重新聲明'src'作爲'null'後設置爲'arrStr [i + 1]'? –

+0

null是else語句,如果id不等於arrStr [i],那麼src得到空值 –

+0

是,但如果它等於,那麼在設置爲'arrStr [i + 1]後,它將被設置爲' 'null'。因此'getFromArray'會一直返回''null'' –

回答

0

你設置

src = arrStr[i+1]; 

您可在線路後添加行

return src; 

因爲你並不需要通過不斷的將剩餘的循環

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'; 
} 
在`getFromArray`