目前我能读取XML的唯一方法是向“解析”函数添加函数,但我希望能够在该函数之外添加函数。当我单击匹配按钮时没有任何反应。虽然解析函数内部的函数有效。我看到大多数人使用“XML”而不是“文档”但是当我添加xml而不是文档时,我得到错误“ReferenceError:xml未定义”。
我想在解析函数之外的xml上运行函数。谢谢你的帮助。
JS
$(document).ready(function(){
$.ajax({
url: 'data.xml',
dataType: "xml",
success: parse,
error: function(){alert("Error: Something wrong with XML");}
});
});
function parse(document){
$(document).find('Swatch').each(function(){
alert($(this).attr('name'));
});
}
$('#Match').on('click', function () {
$(document).find('Swatch').each(function(){
alert($(this).attr('name'));
});
});
XML
<?xml version="1.0" encoding="UTF-8"?>
<Fabric>
<Swatch name="2016" title="Ruby_Red" alt="Main" match="2004, 2005, 2020, 2026, 2035"></Swatch>
<Swatch name="2004" title="Spring_Yellow" alt="Knits"></Swatch>
<Swatch name="2005" title="Newport_Navy" alt="Knits"></Swatch>
<Swatch name="2006" title="Light_Purple" alt="Knits"></Swatch>
<Swatch name="2007" title="Royal_Blue" alt="Knits"></Swatch>
<Swatch name="2008" title="Ruby_Red" alt="Knits"></Swatch>
</Fabric>
答案 0 :(得分:0)
我认为您可能忘记将文档传递给您的函数
试试这个
$('#Match').click(function(document){
$(document).find('Swatch').each(function(){
alert($(this).attr('name'));
});
});
答案 1 :(得分:0)
问题是document
处理程序中的click
引用了window.document
对象。
document
方法中的parse
参数是该方法的本地参数,在退出该方法调用后将不存在。
这里的解决方案是创建一个包含xml引用的全局变量
$(document).ready(function(){
$.ajax({
url: 'data.xml',
dataType: "xml",
success: parse,
error: function(){
alert("Error: Something wrong with XML");
xmldoc = undefined;
}
});
});
var xmldoc;
function parse(document){
xmldoc = document;
$(document).find('Swatch').each(function(){
alert($(this).attr('name'));
});
}
$('#Match').on('click', function () {
$(xmldoc).find('Swatch').each(function(){
alert($(this).attr('name'));
});
});