Javascript 如果找到,如何追加;如果根本找不到,如何替换?(xml find.each循环)
我试图在xml文件中搜索字符串值,如果找到字符串值,则将其追加到div。如果根本找不到,那么我需要在未找到搜索词的同一个div中显示错误文本 这基本上应该是一个搜索页面,将搜索的项目加载到div内容中 目前我的内容加载良好。如果找到搜索词,则加载xml中所有相应的div,但是如果找不到搜索词,则无法显示错误 我的XML:Javascript 如果找到,如何追加;如果根本找不到,如何替换?(xml find.each循环),javascript,jquery,Javascript,Jquery,我试图在xml文件中搜索字符串值,如果找到字符串值,则将其追加到div。如果根本找不到,那么我需要在未找到搜索词的同一个div中显示错误文本 这基本上应该是一个搜索页面,将搜索的项目加载到div内容中 目前我的内容加载良好。如果找到搜索词,则加载xml中所有相应的div,但是如果找不到搜索词,则无法显示错误 我的XML: '; 找到\u string=true;///在数组中保留value=TRUE或FALSE…全局数组,然后在该数组中搜索TRUE。如果全部为FALSE,则显示错误。 } 如果
';
找到\u string=true;///在数组中保留value=TRUE或FALSE…全局数组,然后在该数组中搜索TRUE。如果全部为FALSE,则显示错误。
}
如果(找到字符串){
$('.list-h').append(结果字符串);
$('').text(“已找到”);
}
}); //每个函数结束。
},错误:function(){console.log('错误:无法加载动物信息xml');}
});
//未找到搜索脚本的开始
$(窗口)。加载(函数(){
var error_found=$('#error_div').text();console.log(error_found);
setTimeout(函数(){
如果(发现错误!=“发现”){
var results_string='Your Search Query'+$.url().param('q')。找不到replace(“%20”,“)+”!可能您输入了无效的搜索查询。“;
$('.list-h').append(results_string);}
}, 0);
});
//未找到搜索脚本的结尾
下面是js对完整XML url的处理:
有人能帮我解决这个问题吗?谢谢 我有点不确定所有东西是如何组合在一起的,因为javascript代码不是自解释的。但是,你能从这里开始解决这个问题吗
if(s_string)
var s_string2 = s_string.replace("%20"," ");
//console.log(p_xml_string + s_string2);
if(p_xml_string.toLowerCase().indexOf(s_string2) > -1){
s_string2
变量在此表达式中使用时超出范围
if(p_xml_string.toLowerCase().indexOf(s_string2) > -1){
你在那里想干什么?上面的表达式将始终计算为false,因为s_string2
未定义。换句话说,无论您在if
块中执行什么处理,都永远不会到达该块
同样,这个变量在同一时间被实例化和处理
if(s_string)
var s_string2 = s_string.replace("%20"," "); //<--- This variable's lifecycle ends here
一些改变可能会解决你的问题 在
html
<div id="error_div"></div>
到
更改找到\u字符串
类似代码
if (found_string) {
$('.list-h').append(results_string);
$('#error_div').text("found");
}
可选地为error\u div
#error_div {
color:red;
}
更新成功
代码
var found_string = false; // define found_string globally
$(xmlResponse).find("item").each(function () {
var pr_id = $(this).find("animal_id").text();
var p_title = $(this).find("animal_title").text();
var p_category = $(this).find("animal_category").text();
var p_code = $(this).find("animal_code").text();
var p_img = $(this).find("animal_img").text();
var p_url = $(this).find("animal_url").text();
var p_gen_name = $(this).find("animal_generic").text();
var p_xml_string = p_title + p_gen_name,
results_string = '',
error;
var s_string2 = '';
if (s_string) s_string2 = s_string.replace("%20", " ");
if (s_string2 && p_xml_string.toLowerCase().indexOf(s_string2) > -1) {
//console.log("FOUND : " + p_title);
results_string = '<div class="item"><div class="item-h"><a class="item-anchor" href="' + p_url + '"><div class="item-image"><img class="item-image-first" src="' + p_img + '" alt=""><div class="item-meta"><h2 class="item-title">' + p_title + '</h2><span class="item-arrow"></span></div></div></a></div></div>';
found_string = true; //// KEEP VALUES = TRUE OR FALSE IN AN ARRAY...GLOBAL ARRAY, AND THEN SEARCH THAT ARRAY FOR TRUE. IF ALL FALSE, SHOW ERROR.
}
if (found_string) { // if found then append in list
$('.list-h').append(results_string);
}
}); //xmlResponse .each function end.
if (found_string) { // if found then empty error div
$('#error_div').text("");
} else { // else show error text or not found
$('#error_div').text("not found");
}
var found\u string=false;//全局定义找到的字符串
$(xmlResponse).find(“项”).each(函数(){
var pr_id=$(this).find(“animal_id”).text();
var p_title=$(this).find(“animal_title”).text();
var p_category=$(this).find(“animal_category”).text();
var p_code=$(this).find(“animal_code”).text();
var p_img=$(this).find(“animal_img”).text();
var p_url=$(this).find(“animal_url”).text();
var p_gen_name=$(this).find(“animal_generic”).text();
var p_xml_string=p_title+p_gen_name,
结果_字符串=“”,
错误;
var s_string2='';
如果(s_字符串)s_字符串2=s_字符串。替换(“%20”,”);
if(s_string2&&p_xml_string.toLowerCase().indexOf(s_string2)>-1){
//console.log(“找到:+p_title”);
结果_字符串=“”;
在数组中找到\u string=true;///保留值=true或FALSE…全局数组,然后在该数组中搜索true。如果全部为FALSE,则显示错误。
}
if(find_string){//if find然后追加到列表中
$('.list-h').append(结果字符串);
}
}); //每个函数结束。
if(found_string){//如果找到,则为空错误div
$('#error_div')。文本(“”);
}else{//else显示错误文本或未找到
$('#error_div')。文本(“未找到”);
}
更新了和好吧,我正在尝试使用参数“search.html?q=birds”(birds是搜索字符串)将其他页面的搜索字符串发送到此search.html页面,因此如果有空格,就像
食肉动物
在url中,它将是q=carnivoous%20animals
,所以我只是尝试删除%20
,并用空格替换它。为什么s_string2
超出范围?如果您检查JSFIDLE,div加载正确if(s_string)
仅检查是否已传递任何查询,例如:“search.html?q=”对于该if条件将为false。s_string2
超出范围,因为它是在不同的上下文中声明的……如果您没有注意到,此表达式if(p_xml_string.toLowerCase().indexOf(s_string2)>-1)
将始终计算为false,因为s\u string2
未定义…谢谢你,利奥!我只想在没有找到字符串时显示一个错误,我通过Rohan的答案找到了解决方案!再次感谢!如果找到字符串,如何删除错误div?当前在JSFIDLE中,即使找到了字符串,“found”仍然显示!查看更新的演示,谢谢!!这显示了错误&找到的div完全正确!!:DHey,对于任何查看此答案的人,只需更改s_字符串。替换(“%20”,”)
tos_string.toLowerCase()。替换(“%20”,”)
对于带有capslock的搜索字符串,例如带有大写字母S的“Sparrow”,需要在javascript中将其更改为小S,否则将无法找到。
<div id="error_div"></div>
if (s_string) var s_string2 = s_string.replace("%20", " ");
//console.log(p_xml_string + s_string2);
if (p_xml_string.toLowerCase().indexOf(s_string2) > -1) {
var s_string2='';
if (s_string) s_string2 = s_string.replace("%20", " ");
if (s_string2 && p_xml_string.toLowerCase().indexOf(s_string2) > -1) {
if (found_string) {
$('.list-h').append(results_string);
$('#error_div').text("found");
}
#error_div {
color:red;
}
var found_string = false; // define found_string globally
$(xmlResponse).find("item").each(function () {
var pr_id = $(this).find("animal_id").text();
var p_title = $(this).find("animal_title").text();
var p_category = $(this).find("animal_category").text();
var p_code = $(this).find("animal_code").text();
var p_img = $(this).find("animal_img").text();
var p_url = $(this).find("animal_url").text();
var p_gen_name = $(this).find("animal_generic").text();
var p_xml_string = p_title + p_gen_name,
results_string = '',
error;
var s_string2 = '';
if (s_string) s_string2 = s_string.replace("%20", " ");
if (s_string2 && p_xml_string.toLowerCase().indexOf(s_string2) > -1) {
//console.log("FOUND : " + p_title);
results_string = '<div class="item"><div class="item-h"><a class="item-anchor" href="' + p_url + '"><div class="item-image"><img class="item-image-first" src="' + p_img + '" alt=""><div class="item-meta"><h2 class="item-title">' + p_title + '</h2><span class="item-arrow"></span></div></div></a></div></div>';
found_string = true; //// KEEP VALUES = TRUE OR FALSE IN AN ARRAY...GLOBAL ARRAY, AND THEN SEARCH THAT ARRAY FOR TRUE. IF ALL FALSE, SHOW ERROR.
}
if (found_string) { // if found then append in list
$('.list-h').append(results_string);
}
}); //xmlResponse .each function end.
if (found_string) { // if found then empty error div
$('#error_div').text("");
} else { // else show error text or not found
$('#error_div').text("not found");
}