我有这个简单的javascript代码,用于搜索xml属性中的特定字符串。它已经不区分大小写,所以如果我搜索字符串“Técnico”或“técnico”,它会返回相同的结果。
但是我想搜索没有特殊字符,所以如果我使用“Tecnico”或“tecnico”而不是“Técnico”它应该返回相同的结果。请你帮助我好吗?以下是我正在使用的代码。
if(readCookie('googtrans')=='/pt/pt')
修改
仍然没有工作,事实上,之前的搜索停止工作,我不得不回滚那个开发。但我仍然留下了我所做的一个例子。正如您在accent_fold()
中看到的那样,我使用var accentMap = { 'á':'a', 'é':'e', 'í':'i','ó':'o','ú':'u'};
function accent_fold(s){
if (!s) { return ''; }
var ret = '';
for (var i = 0; i < s.length; i++) {
if(!accentMap[s.charAt(i)])
ret += s.charAt(i);
else
ret += accentMap[s.charAt(i)];
}
return ret;
}
function pesquisa() {
$("#profissao").empty();
xmlDoc = $.parseXML(xml);
var resultado;
$xml = $(xmlDoc);
var texto = $("#pesq_profissao").val();
if (texto.length > 2) {
if( readCookie('googtrans')=='/pt/pt'){
var valor = $(xml).find('profissao').filter(function() {
var returns = accent_fold(($(this).attr('codigo') || '').toLowerCase().indexOf(texto.toLowerCase()) > -1);
return returns
});
resultado = valor;
}else if(readCookie('googtrans')== null)
{
var valor = $(xml).find('profissao').filter(function() {
return ($(this).attr('codigo') || '').toLowerCase().indexOf(texto.toLowerCase()) > -1;
});
resultado = valor;
}else if(readCookie('googtrans')=='/pt/en')
{
var valor = $(xml).find('profissao').filter(function() {
return ($(this).attr('codigo') || '').toLowerCase().indexOf(texto.toLowerCase()) > -1;
});
resultado = valor;
}else
{
var valor = $(xml).find('profissao').filter(function() {
return ($(this).attr('codigo') || '').toLowerCase().indexOf(texto.toLowerCase()) > -1;
});
resultado = valor;
}
$.each(resultado, function (index, value) {
jQuery.fn.reverse = [].reverse;
$parents = $(value).parents().reverse();
var new_node = new node($(value));
// caminho ate a raiz
$.each($parents, function (index, value) {
var div = document.createElement('div');
var li = document.createElement('li');
$(li).append($(value).attr("descricao"));
$(div).addClass("cae_open");
$(div).append(li);
$("#profissao").append(div);
});
// no folha
var div = document.createElement('div');
var a = document.createElement('li');
$(a).append($(value).attr("descricao"));
$(a).addClass("transbox");
$(div).addClass("cae_sel");
$(div).append(a);
link = document.createElement('a');
Sigla = document.createTextNode(new_node.Sigla);
link.appendChild(Sigla);
$(link).attr("href", new_node.url);
$(link).attr('target', '_blank');
a.appendChild(link);
$(div).click(function () {
parametersValue = jQuery.makeArray($(value).attr("codigo"));
FinalizaPesquisa();
});
$("#profissao").append(div);
});
if (resultado.length == 0) {
var span = document.createElement('span');
$(span).append("Não existem resultados para a sua pesquisa.");
$("#profissao").append(span);
}
}
else {
buildTree(root);
}
}
函数,但我无法使其工作,在chrome控制台中没有显示任何错误,但在调试之后,我看到搜索是没有返回它想要返回的值。你们能帮我一次吗?
哦,我说服老人允许我发布整个搜索功能,功能名称是葡萄牙语,所以函数 pequisa 表示函数 search 。所以这就是它。
[
{
object: 'list',
data:
[
{
id: 'cust1',
object: 'customer',
account_balance: 0,
created: 1514549772,
currency: 'usd',
description: 'CustomerName1',
discount: null,
email: null,
subscriptions: {
object: 'list',
data: [],
has_more: false,
total_count: 0,
url: '/v1/customers/cust1/subscriptions'
}
},
{
id: 'cust2',
object: 'customer',
account_balance: 0,
created: 1514549772,
currency: 'usd',
description: 'CustomerName2',
discount: null,
email: null,
subscriptions: {
object: 'list',
data: [],
has_more: false,
total_count: 0,
url: '/v1/customers/cust2/subscriptions'
}
},
],
has_more: false,
url: "/v1/customers"
}
]
答案 0 :(得分:1)
您可以查看here。它有你想要的。
编辑:Xml
解析并添加示例 js 。
var parser, xmlDoc;
var text = "<bookstore><book>" +
"<title>Evérydáy Italían</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";
if (window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
} else {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(text);
}
var accentMap = {
'á':'a', 'é':'e', 'í':'i','ó':'o','ú':'u'
};
document.write(accent_fold(xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue));
function accent_fold(s){
if (!s) { return ''; }
var ret = '';
for (var i = 0; i < s.length; i++) {
if(!accentMap[s.charAt(i)])
ret += s.charAt(i);
else
ret += accentMap[s.charAt(i)];
}
return ret;
}
&#13;