无法找出搜索错误
Cant figure out search error
也在研究这个问题。我已经修复了拼写和(我认为)括号错误。还修复了我看到的几个突出的错误,但没有走得太远。我仍然不知道下一步该去哪里。
(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 = );{
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;
;
})();
有一些语法错误应该会阻止它运行。
// syntax error
var results = ();
// should be
var results = [];
此外,showMatches
的定义似乎以不匹配的右括号结尾。
鉴于代码以某种方式运行时出现这些语法错误(可能还有其他我没有注意到的错误),(a) 明显的问题是:
if (results.length = 0) {
是的,这是一个作业,而不是比较。 您只需将数组的长度设置为零,即可有效地清除它。 这两者都失败了这里的长度测试(返回 0),然后将现在为空的数组作为结果显示,但当然它现在是一个长度为 0 的数组。
另一方面,可能不是实际问题,但我无能为力。 while
循环业务来修剪字符串? 是的,不要那样做。 使用 trim
. 如果您需要填充代码,则始终存在:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^'s+|'s+$/g, '');
};
}
相关文章:
- Javascript搜索函数错误
- YouTube API v3哈希标签搜索错误结果
- 添加'错误'消息发送到同位素.JS搜索筛选器
- Twitter搜索API身份验证错误
- 谷歌自定义搜索结果通过代理显示错误
- 不断获得"未捕获的类型错误:无法使用'在'操作员搜索'191'"jQu
- getDetails中引用值错误-谷歌位置搜索
- Symfony2 JSON 对象 - 错误未捕获类型错误:无法使用“in”运算符搜索“636”
- 如何搜索错误
- 获取未捕获的类型错误:无法使用“in”运算符搜索“length”in
- 类型错误:无法使用“in”运算符在 [{}] 中搜索“_id”
- 无法找出搜索错误
- 角度类型提前异步结果 - 收到错误“类型错误:无法使用'in'运算符搜索 ..在..".
- jQuery getScript 函数添加了搜索参数,并抛出 404 错误
- JavaScript 中的 RegExp 在进行全局搜索时出现错误
- 未捕获的类型错误:无法使用“in”运算符在 false 中搜索“长度”
- 无法使用“in”运算符搜索错误
- 搜索项函数在数组中给出了错误的值
- 当存在无效搜索时,向表中添加特定的搜索错误
- jQuery Bootgrid搜索错误