2017-05-09 90 views
0

我想解決這個挑戰的FreeCodeCamp挑戰,我遇到了一個問題,我不知道如何解決。問題與輸入表單和循環通過一個對象

這是對Codepen一個鏈接,我已經把我的所有代碼:Click here

基本上問題是與最後一個函數,用來通過用戶列表來搜索一個。 我已經這樣做了,只要搜索表單的值發生變化,它就會遍歷用戶對象並隱藏那些不包含任何插入字符的對象。

整個代碼工作得很好,特別是因爲我是console.log() - 函數中變量的所有變體,但在前端端,它在兩次迭代後停止。例如,如果我搜索Nelari,在插入N之後,代碼將隱藏大部分用戶,而當我鍵入e時隱藏了更多用戶,但在這兩次迭代之後它會停止。在控制檯上它會繼續,直到最後結束時纔會返回正確的結果,但在前臺停止。

除此之外,我已經注意到即使是某些顯示用戶在我所搜索的內容中是正確的,它也會保留一些不包含我放入的任何字符的內容。

爲了簡單起見,我會在這裏把函數代碼太:

`

// SEARCH FORM 
window.addEventListener('input', function (e) { 
     var searchQuery = $("input").val().toLowerCase().replace(/[^A-Z0-9_]/ig, ""); 
    search(Acc, searchQuery); 
    }, false); 

function search (accounts, what) { 
    console.log(what); 
    if (what.length > 0) { 
     Object.keys(accounts).forEach(function(key) { 
      var IDD = "." + key; 
      console.log(IDD) 
      accQuery = key.toLowerCase(); 
      console.log(accQuery); 
      if (accQuery) { 
       if (accQuery.indexOf(what) >= 0) { 
        $(IDD).css({"display": "block"}); 
        console.log("FOUND!"); 
       }; 
       if (accQuery.indexOf(what) == -1) { 
        $(IDD).css({"display": "none"}); 
        console.log("NOT FOUND!"); 
       }; 
      }; 

     }); 
    } 
    else if (what.length < 1) { 
     Object.keys(accounts).forEach(function(key) { 
      var IID = "." + key; 
      $(IID).css({"display": "block"}); 
     }); 
    }; 
};` 

回答

0

當我看到在你的代碼你的級別選擇隱藏的元素。賬戶的關鍵可以是大寫,李類是小寫。由於CSS選擇器區分大小寫(http://reference.sitepoint.com/css/casesensitivity),它找不到要隱藏的正確元素。如果您使用accQuery來獲取元素而不是密鑰,它將起作用。

accQuery = key.toLowerCase(); 
    console.log(accQuery); 

    var IDD = "." + accQuery ; 
    console.log(IDD) 
+0

你我的朋友是個天才,我不能相信我沒有注意到!非常感謝! –