0

目前我可以读取 XML 的唯一方法是将函数添加到“解析”函数,但我希望能够在该函数之外添加函数。当我单击“匹配”按钮时,没有任何反应。尽管 parse 函数内部的函数有效。我看到大多数人使用“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>
4

2 回答 2

0

我认为您可能会忘记将文档传递给您的功能

尝试这个

$('#Match').click(function(document){
$(document).find('Swatch').each(function(){
   alert($(this).attr('name'));
 });
});
于 2013-07-15T05:24:37.507 回答
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'));
    });
});
于 2013-07-15T05:36:56.373 回答