Extjs Ext.DomQuery.select Issue如果选择器包含逗号
我试图根据选择器从xml查询节点,如果我的select on中有逗号,domquery将抛出错误 发布于:Ext.DomQuery.select(“root/I[a='abc,d']”,resp.responseXML)强> 下面是我的示例代码:Extjs Ext.DomQuery.select Issue如果选择器包含逗号,extjs,extjs4,extjs3,extjs4.2,Extjs,Extjs4,Extjs3,Extjs4.2,我试图根据选择器从xml查询节点,如果我的select on中有逗号,domquery将抛出错误 发布于:Ext.DomQuery.select(“root/I[a='abc,d']”,resp.responseXML) 下面是我的示例代码: Ext.onReady(function () { Ext.Ajax.request({ url : 'sample.xml', success : function (resp, e) {
Ext.onReady(function () {
Ext.Ajax.request({
url : 'sample.xml',
success : function (resp, e) {
//var a = Ext.DomQuery.select("root/I[a='abc']", resp.responseXML);
var b = Ext.DomQuery.select("root/I[@a='abc']", resp.responseXML);
var c = Ext.DomQuery.select("root/I[a='abc'd']", resp.responseXML);
var d = Ext.DomQuery.select("root/I[a='abc@d']", resp.responseXML);
//All the above are working fine
//Below line is not at all working
var d = Ext.DomQuery.select("root/I[a='abc,d']", resp.responseXML);
// throwing error as : 'Error parsing selector, parsing failed at "' + path + '"'; at line 1126 in ext-all-debug.js
},
failure : function (resp, e) {
debugger;
}
});
});
我的xml如下所示:
<root>
<I a="abc"/>
<I a="abc'd"/>
<I a="abc@d"/>
<I a="abc,d"/>
<I a="abc!d"/>
</root>
我在代码中已经使用了很多地方,这只是一个示例。此选择器(此处为“abc,d”)始终来自一个变量,并且是动态的。没人知道逗号什么时候来,什么时候不来。如何处理这个问题?这有什么解决办法吗?这行不通。我试了很多。最后决定在domquery中使用从开始,并遍历结果数组以找到精确匹配。请参见以下示例
var d = Ext.DomQuery.select("root/I[a^='abc']", resp.responseXML);
var selectedNode = null;
for(var index = 0; index < d.length; index++){
if(d[index].getAttribute('a') == 'abc,d'){
selectedNode = d[index];
}
}
console.log(selectedNode);
var selectedNode = new Array();
for(var index = 0; index < d.length; index++){
if(d[index].getAttribute('a') == 'abc,d'){
selectedNode.push(d[index]);
}
}
console.log(selectedNode);
var d=Ext.DomQuery.select(“root/I[a^='abc']”,resp.responseXML);
var selectedNode=null;
对于(var指数=0;指数
如果希望数组中存在精确匹配,请使用以下示例
var d = Ext.DomQuery.select("root/I[a^='abc']", resp.responseXML);
var selectedNode = null;
for(var index = 0; index < d.length; index++){
if(d[index].getAttribute('a') == 'abc,d'){
selectedNode = d[index];
}
}
console.log(selectedNode);
var selectedNode = new Array();
for(var index = 0; index < d.length; index++){
if(d[index].getAttribute('a') == 'abc,d'){
selectedNode.push(d[index]);
}
}
console.log(selectedNode);
var selectedNode=new Array();
对于(var指数=0;指数
您使用的是什么版本的ExtJS?我刚刚在4.2中试过,效果很好。顺便说一下,将其同时标记为extjs3和extjs4是没有意义的。这两个版本非常不同,这段代码对于任何版本的ExtJS都没有变化。所以我两个都做了标记。我甚至尝试了extjs4.2.1。它抛出的错误是:“错误解析选择器。解析失败在\”[a=\'abc\”,位于ext-all-debug.js的第行:throw new ext.error(err);(行号6879)