2015-02-09 238 views
-2

我已經調試了99%的代碼,但我被卡在了括號內......?收起javascript代碼正確

// Create privatized scope using a self-executing function 
(function(){ 


// Variable initialization (DO NOT FIX ANY OF THE BELOW VAR's) 
var resultsDIV = document.getElementById("results"), 
    searchInput = document.forms[0].search, 
    currentSearch = '' 
; 

// Validates search query 
var validate = function(query){ 

    // Trim whitespace from start and end of search query 
    while(query.charAt(0) = " "){ 
     query = query.substring(1, query.length); 
    }; 
    while(query.charAt(query.length-1) === ""){ 
     query = query.substring(0, query.length-1); 
    ; 

    // Check search length, must have 3 characters 
    if(query.length < 3){ 
     alert("Your search query is too small, try again."); 

     // (DO NOT FIX THE LINE DIRECTLY BELOW) 
     searchInput.focus(); 
     return; 
    }; 

    search(query); 
}; 

// Finds search matches 
var search = function(query) { 

    // split the user's search query string into an array 
    var queryArray = query.join(" "); 

    // array to store matched results from database.js 
    var results = []; 

    // loop through each index of db array 
    for(var i=0, j=db.length; i<j; i++){ 

     // each db[i] is a single video item, each title ends with a pipe "|" 
     // save a lowercase variable of the video title 
     var dbTitleEnd = db[i].indexOf('|'); 
     var dbitem = db[i].tolowercase().substring(0, dbTitleEnd); 

     // loop through the user's search query words 
     // save a lowercase variable of the search keyword 
     for(var ii=0, jj=queryArray.length; ii<jj; ii++){ 
      var qitem = queryArray[ii].tolowercase(); 

      // is the keyword anywhere in the video title? 
      // If a match is found, push full db[i] into results array 
      var compare = dbitem.indexOf(qitem); 
      if(compare !== -1){ 
       results.push(db[i]); 
      }; 
     ; 
    ; 

    results.sort(); 

    // Check that matches were found, and run output functions 
    if(results.length = 0){ 
     noMatch(); 
    }else{ 
     showMatches(results); 
    }; 
}; 

// Put "No Results" message into page (DO NOT FIX THE HTML VAR NOR THE innerHTML) 
var noMatch = function(){ 
    var html = ''+ 
     '<p>No Results found.</p>'+ 
     '<p style="font-size:10px;">Try searching for "JavaScript". Just an idea.</p>' 
    ; 
    resultsDIV.innerHTML = html; 
}; 

// Put matches into page as paragraphs with anchors 
var showMatches = function(results){ 

    // THE NEXT 4 LINES ARE CORRECT. 
    var html = '<p>Results</p>', 
     title, 
     url 
    ; 

    // loop through all the results search() function 
    for(var i=0, j=results.length; i<j; i++){ 

     // title of video ends with pipe 
     // pull the title's string using index numbers 
     titleEnd = results[i].indexOf('|'); 
     title = results[i].subString(0, titleEnd); 

     // pull the video url after the title 
     url = results[i].substring(results[i].indexOf('|')+1, results[i].length); 

     // make the video link - THE NEXT LINE IS CORRECT. 
     html += '<p><a href=' + url + '>' + title + '</a></p>'; 
    }; 
    resultsDIV.innerHTML = html; //THIS LINE IS CORRECT. 
}; 

// The onsubmit event will be reviewed in upcoming Course Material. 
// THE LINE DIRECTLY BELOW IS CORRECT 
document.forms[0].onsubmit = function(){ 
    var query = searchInput.value; 
    validqte(query); 

    // return false is needed for most events - this will be reviewed in upcoming course material 
    // THE LINE DIRECTLY BELOW IS CORRECT 
    return false; 
}; 

})(); 

作業基本完成1個最終語法錯誤依然存在:

如何正確收尾這段JavaScript代碼?任何幫助將不勝感激!!!

+0

@PupaRebbe他試圖調用函數,這就是爲什麼他有'()'。 – 2015-02-09 04:07:55

+0

亞倫,如果我的答案解決了您的問題,請按下我答案旁邊的複選框接受它。它會將您的問題標記爲已回答,並在此過程中幫助我。謝謝。 – 2015-02-09 15:01:46

回答

2

您需要關閉你的第二while聲明:

while(query.charAt(query.length - 1) === "") { 
    query = query.substring(0, query.length - 1); 
} // Note bracket here (not ;) 

您還需要括號關閉您for循環:

for(var i = 0, j = db.length; i < j; i++) { 
    . 
    . 
    . 
    for(var ii = 0, jj = queryArray.length; ii < jj; ii++){ 
     . 
     . 
     . 
    } // Note bracket here 
} // And here 

一個側面說明:你不需要關閉與; s代碼塊。如上所示,whilefor塊不需要用;關閉。 if - else陳述不需要以;關閉。