JQuery可以';t返回xml值
我有一个简单的xmlJQuery可以';t返回xml值,jquery,xml,Jquery,Xml,我有一个简单的xml <?xml version="1.0"?> <library> <item name="box_shelf"> <imageback src="images/box_shelf_color.png"/> <outline src="images/box_shelf_outline.png"/> <sku> <wh sk
<?xml version="1.0"?>
<library>
<item name="box_shelf">
<imageback src="images/box_shelf_color.png"/>
<outline src="images/box_shelf_outline.png"/>
<sku>
<wh sku="4696424171" />
<ch sku="4696424179" />
<choc sku="4696425863" />
<ma sku="4696424175" />
</sku>
</item>
</library>
控制台日志可以使用
******images/box_shelf_outline.png
******images/box_shelf_color.png
但是当我试图将值返回到变量中时,我得到了未定义的值
var image_outline = parseImageXml("box_shelf","outline");
var image_back = parseImageXml("box_shelf","imageback");
console.log(image_outline+":"+image_back);
undefined:undefined
任何洞察都会很好,谢谢您在
每个
回调中返回值,因此外部函数的返回值仍然是未定义的
。创建一个数组,将值推入回调内部,然后在每个
外部返回数组
function parseImageXml(mainNode, targetNode) {
var targets = [];
$(libraryXML).find('item').each(function() {
if ($(this).attr('name') == mainNode) {
var $temp = $(this).find(targetNode).attr('src');
console.log("******" + $temp);
targets.push($temp);
}
});
return targets;
}
var image_outline = parseImageXml("box_shelf","outline")[0];
var image_back = parseImageXml("box_shelf","imageback")[0];
console.log(image_outline+":"+image_back);
您没有从parseImageXml函数返回任何内容。尝试更改为以下内容:
function parseImageXml(mainNode,targetNode) {
var $temp; //Declare your scope variable.
$(libraryXML).find('item').each(function() {
if($(this).attr('name') == mainNode) {
$temp = $(this).find(targetNode).attr('src');// Assign to the scoped variable
console.log("******"+$temp);
return false; //Exit your for each loop
}
});
return $temp;
}
function parseImageXml(mainNode,targetNode) {
var $temp; //Declare your scope variable.
$(libraryXML).find('item').each(function() {
if($(this).attr('name') == mainNode) {
$temp = $(this).find(targetNode).attr('src');// Assign to the scoped variable
console.log("******"+$temp);
return false; //Exit your for each loop
}
});
return $temp;
}