Jquery onclick事件加载XML的特定节点

Jquery onclick event Load specific node(s) of XML

本文关键字:节点 XML onclick 事件 加载 Jquery      更新时间:2024-04-08

我需要找到一种方法,将正确的输入传递给这个javascript函数,让它搜索XML文档并返回请求的节点值。当如下所示进行硬编码时,XML节点值的解析实际上可以正常工作,并且我可以使用以下方法成功加载内容:

    function parse(document){
    Lyrics2 = $(document).find('elementRef[id="2"] content').text()
    Ref2 = $(document).find('elementRef[id="2"] bibleRefs').text() 
    $("#content").text(Lyrics2);
    $("#scripture").text(Ref2);
    };
$.ajax({
url: 'songlyrics.xml',
dataType: "xml",
success: parse
});

问题是,我想将一个额外的参数传递给parse函数,该函数在XML中搜索somnething。最终目标是在点击链接后,用XML文档中修改的内容在页面上更新div,例如,类似这样的内容(其中"reference"是传入的搜索字符串):

    function parse(document,reference){
    Lyrics2 = $(document).find(reference).text()
    $("#content").text(Lyrics2);    
 };
...
<div id="content"></div>
<a href="javascript:;" id="play" onclick="javascript:parse(document,'elementRef[id='&quot;2'&quot;] artist')">Title</a>

所发生的情况是,在单击指定了onClick以运行"parse"函数的链接后,页面加载中出现的文本将被替换为空——在调试窗口中不会生成任何错误。

XML:

<?xml version="1.0" encoding="UTF-8"?>
        <elements>
           <elementRef id="1">
              <name>John</name>
              <artist>Smith</artist>
              <content>Active</content>
              <supportImg>test1</supportImg>
              <bibleRefs>Mark 2:13</bibleRefs>
              <other>Mark 2:11</other>
           </elementRef>
           <elementRef id="2">
              <name>Jane</name>
              <artist>Smith</artist>
              <content>Active</content>
              <supportImg>test2</supportImg>
              <bibleRefs>John 3:17 Mark 12:3</bibleRefs>
              <other>October, 2011</other>
           </elementRef>
 </elements>

如果您需要更多信息以提供帮助,请告诉我。非常感谢您的帮助。

我想你要找的是

function parse(reference) {
    if (!xml) { //the ajax request is not yet loaded so there is nothing to do
        return;
    }
    var content = $(xml).find(reference).text()
    $("#content").text(content);
};
var xml;
$.ajax({
    url: '
    songlyrics.xml ',
    dataType: "xml",
    success: function (doc) {
        //assign the loaded xml content to a gloabl variable so that it can be used later
        xml = doc;
    }
});

然后

<a href="javascript:;" id="play" onclick="javascript:parse('elementRef[id='&quot;2'&quot;] artist')">Title</a>