2012-10-11 27 views
0

我有一個標記對象,關鍵是聯繫人名稱。 以及具有「聯繫人」項的對象數組,這也是聯繫人姓名。如果存在,則顯示'查看圍欄'按鈕,但如果不存在則顯示'無圍欄'按鈕

我試圖檢測聯繫人是否存在對象數組中存在的「地理圍欄」,並顯示「查看圍欄」按鈕,如果沒有,則顯示「無圍欄」按鈕。

圍欄存儲在對象的數組稱爲fencesCookie

到目前爲止的代碼:

function fenceButton(id) { 
    for (var key in markers) { 
     if (markers[key].id === id) { 
      $.each(fencesCookie, function (i, f) { 
       if (key === f.contact) { 
        menu.add(strings[strLang].viewfence, 'fence', 
        function(){ 
         viewFence(f.lat, f.lng, f.radius); 
         menu.close(); 
        }); 
       } else { 
        console.log("No Fence : "+key+" "+f.contact) 
       } 
      }); 
      if ($.isEmptyObject(fencesCookie)) { 
       menu.add('No Fence', 'nofence', 
       function(){ 
        menu.close(); 
       });    
      } 
     } 
    } 
} 

的是的console.log吐痰所有的無與倫比的物品,所以加上「沒有圍牆」按鈕這裏的代碼會導致多個按鈕,而不僅僅是一個View或No Fence按鈕。

我該怎麼做這個錯誤的方式?

回答

1

文斯,沒有看到什麼在「fencesCookie」或什麼在你的「標記」的對象是很難說,但它要麼:

  1. [不太可能]您有多個匹配的ID在你的「標記'對象,它導致'(markers [key] .id === id)'每次都給出肯定的結果並再次跳入cookie循環。

  2. [最有可能]對於'fencesCookie'中匹配鍵的測試對所有情況都是失敗的,除非它匹配,所以你打印出'fenceFookie'或'fenceFookie'中每個鍵的'No Fence'按鈕但一鍵。

我改變了順序,並添加了一個變量來檢查循環完成後的匹配。 試試這個(或類似的東西):

function fenceButton(id) { 
    for (var key in markers) { 
     if (markers[key].id === id) { 
      // set a variable to test if we find a match 
      // we'll set it to true if we find one 
      var match = false; 
      // Test that fencesCookie exists 
      if ($.isEmptyObject(fencesCookie)) { 
       // if not 
       menu.add('No Fence', 'nofence', 
       function(){ 
        menu.close(); 
       });    
      } else { 
       // if it does 
       $.each(fencesCookie, function (i, f) { 
        // loop through the cookie and match on the f.contact 
        if (key === f.contact) { 
         // set match to true 
         match = true; 
         // create the 'view' button 
         menu.add(strings[strLang].viewfence, 'fence', 
         function(){ 
          viewFence(f.lat, f.lng, f.radius); 
          menu.close(); 
         }); 
        } 
       }); 
       // The loop is done so test 'match' to see if we found a match 
       if (match === false) { 
        // No matches so create the 'No Fence' button 
        console.log("No Fence : "+key+" "+f.contact) 
       } 
      } 
     } 
    } 
} 
+0

謝謝你@goodcitizen你已經解決了我的問題。 –

相關問題