Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javaScript从xml列表加载特定元素的xml数据_Javascript_Html_Xml - Fatal编程技术网

使用javaScript从xml列表加载特定元素的xml数据

使用javaScript从xml列表加载特定元素的xml数据,javascript,html,xml,Javascript,Html,Xml,我希望有人会知道如何帮助我解决这个问题,我是javaScript和XML新手。基本上,我有一个包含产品列表的xml文件,我已经成功地将数据动态加载到html页面中的ul li列表中,li元素有标题和图像,现在我需要能够单击此li元素并将特定产品的剩余数据加载到新页面(或div)中。我得到了“UncaughtReferenceError:我没有定义”我的问题是,单击产品列表中的特定产品后,如何加载正确的剩余数据。(我希望我的解释足够清楚)这是我的代码,第一个函数在html页面中生成ul li列表,

我希望有人会知道如何帮助我解决这个问题,我是javaScript和XML新手。基本上,我有一个包含产品列表的xml文件,我已经成功地将数据动态加载到html页面中的ul li列表中,li元素有标题和图像,现在我需要能够单击此li元素并将特定产品的剩余数据加载到新页面(或div)中。我得到了“UncaughtReferenceError:我没有定义”我的问题是,单击产品列表中的特定产品后,如何加载正确的剩余数据。(我希望我的解释足够清楚)这是我的代码,第一个函数在html页面中生成ul li列表,displayPRInfo()函数应该将单击的任何产品的数据加载到showPrInfo div中

请帮助我,任何帮助,谢谢阅读

function loadProducts() {
var liOpen=("<li onclick='displayPRInfo(" + i + ")'><p>");
      var divOpen=("</p><div class='prod-sq-img'>");  
      var closingTags=("</div></li>");
    var txt;
    var image;
    var title;


    var x=xmlDoc.getElementsByTagName("product");
    for (i=0;i<x.length;i++)
      { 
      title=(x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue);
      image=(x[i].getElementsByTagName("imgfile")[0].childNodes[0].nodeValue);
      txt=  liOpen +  title + divOpen + image + closingTags ;
      document.getElementById("ulList").innerHTML+=txt;
      }

    }
        function displayPRInfo(i)
{
title=(x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue);
euPriceRet=(x[i].getElementsByTagName("euror")[0].childNodes[0].nodeValue);
euPriceTrade=(x[i].getElementsByTagName("eurot")[0].childNodes[0].nodeValue);
euPriceSet=(x[i].getElementsByTagName("eset")[0].childNodes[0].nodeValue);
minimumQuantity=(x[i].getElementsByTagName("mqty")[0].childNodes[0].nodeValue);
description=(x[i].getElementsByTagName("desc")[0].childNodes[0].nodeValue);
prBigImg=(x[i].getElementsByTagName("pimgfile")[0].childNodes[0].nodeValue);
prInfo=title+"<br>"+euPriceRet+"<br>"+euPriceTrade+"<br> "+euPriceSet+"<br> "+minimumQuantity+"<br>"+description+"<br>"+ prBigImg ;
document.getElementById("showPrInfo").innerHTML=prInfo;
}
函数加载产品(){
var liOpen=(“
  • liOpen=(“

  • for(i=0;i可以使用jQuery操作xml并设置onclick事件

    function loadProducts() {
        var products = $(xmlDoc).find('product');
    
        for (var i = 0; i < products.length; i++) {
          $('#ulList').append('<li id="product_' + i + '"><p>' + $(products[i]).find('title').text() + '</p><div class="prod-sq-img">' + $(products[i]).find('imgfile').text() + '</div></li>');
          $('#product_' + i).click(displayPRInfo.bind($('#product_' + i), products[i]));
        }
     }
    
    function displayPRInfo(xmlProduct) {
      var title= $(xmlProduct).find('title).text();
      var euPriceRet = $(xmlProduct).find('euror').text();
      var euPriceTrade = $(xmlProduct).find('eurot').text();
      var euPriceSet = $(xmlProduct).find('eset').text();
      var minimumQuantity = $(xmlProduct).find('mqty').text();
      var description = $(xmlProduct).find('desc').text();
      var prBigImg = $(xmlProduct).find('pimgfile').text();
      var prInfo = title+"<br>"+euPriceRet+"<br>"+euPriceTrade+"<br> "+euPriceSet+"<br> "+minimumQuantity+"<br>"+description+"<br>"+ prBigImg ;
      $('#showPrInfo').html(prInfo);
    }
    
    函数加载产品(){
    var products=$(xmlDoc.find('product');
    对于(变量i=0;i”++$(产品[i]).find('title').text()++'

    ”++$(产品[i]).find('imgfile').text()++'); $('#product_'+i)。单击(displayPRInfo.bind($('#product_'+i),products[i]); } } 函数displayPRInfo(xmlProduct){ var title=$(xmlProduct.find('title.text()); var eupricelet=$(xmlProduct.find('euror').text(); var euPriceTrade=$(xmlProduct.find('eurot').text(); var euPriceSet=$(xmlProduct.find('eset').text(); var minimumQuantity=$(xmlProduct.find('mqty').text(); var description=$(xmlProduct.find('desc').text(); var prBigImg=$(xmlProduct.find('pimgfile').text(); var prInfo=title+“
    ”+eupricelet+”
    “+euPriceTrade+”
    “+euPriceSet+”
    “+minimumQuantity+”
    “+description+”
    “+prBigImg; $('#showPrInfo').html(prInfo); }
    我发现了这一点,它对我有一点帮助,问题是我希望按请求加载图像,而不是一次加载所有图像,而是单击一个按钮并用xml数据设置img src,我有这个

        <!doctype html>
    <html lang="es">
    
    <head>
        <style>
            #iosslider_nav {
                height: 13px;
                right: 10px;
                /* align right side */
                /*left: 10px;*/
                /* align left side */
    
                bottom: 10px;
                /*position: absolute;*/
                /* set if needed */
                /*margin-top: 10px;*/
                /* remove if position is absolute */
            }
    
            #iosslider_nav .btn {
                width: 13px;
                height: 13px;
                background: #eaeaea;
                margin: 0 5px 0 0;
                -webkit-border-radius: 100%;
                -moz-border-radius: 100%;
                border-radius: 100%;
                cursor: pointer;
                float: left;
                /* ie 7/8 fix */
    
                background: url('../images/bull_off.png') no-repeat\9;
            }
        </style>
    </head>
    
    <body>
        <div id="ninja_slider"></div>
        <div id="iosslider_nav"></div>
    
        <script type="text/javascript" src="jquery-1.9.1.min.js"></script>
    
        <script type="text/javascript">
            var xmlDoc = loadXMLDoc("xml/xml_data.xml");
    
            // generic load xml data function
            function loadXMLDoc(filename) {
                if (window.XMLHttpRequest) {
                    xhttp = new XMLHttpRequest();
                } else { // code for IE5 and IE6
                    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                xhttp.open("GET", filename, false);
                xhttp.send();
                return xhttp.responseXML;
            }
    
            set_slider();
            //set_navigation('xml/xml_data.xml', 'iosslider_nav');
    
            function set_slider() {
                var item_div = $(xmlDoc).find('desk');
                var item_btn = $(xmlDoc).find('desk');
                var item_img = $(xmlDoc).find('desk');
    
                // Object.bind() handler for ie 7/8
                if (!Function.prototype.bind) {
                    Function.prototype.bind = function (oThis) {
                        if (typeof this !== 'function') {
                            // closest thing possible to the ECMAScript 5
                            // internal IsCallable function
                            throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
                        }
                        var aArgs = Array.prototype.slice.call(arguments, 1),
                            fToBind = this,
                            fNOP = function () {},
                            fBound = function () {
                                return fToBind.apply(this instanceof fNOP && oThis ? this : oThis,
                                    aArgs.concat(Array.prototype.slice.call(arguments)));
                            };
                        fNOP.prototype = this.prototype;
                        fBound.prototype = new fNOP();
                        return fBound;
                    };
                }
    
                // create main div's
                for (var i = 0; i < item_div.length; i++) {
                    $('#ninja_slider').append('<div id="item_div' + i + '"><a href="javascript:void(0);" class="item_anchor"><img id="item_img' + i + '" src="" class="ninja_item"></a></div>');
                    $('#item_div' + i).on('click', load_current.bind($('#item_div' + i), item_div[i]));
                }
    
                // load first element
                $('#ninja_slider #item_div0 .item_anchor img').attr('src', $(item_img[0]).find('image').text());
    
    
                // create nav div's
                for (var i = 0; i < item_btn.length; i++) {
                    $('#iosslider_nav').append('<div id="item_btn' + i + '" class="btn"></div>');
                    $('#item_btn' + i).on('click', load_current.bind($('#item_btn' + i), item_btn[i]));
                }
            }
    
            function load_current(xmlData) {
                var image = $(xmlData).find('image').text();
                var src = image;
                //console.log(image);
                var item_img = $(xmlDoc).find('desk');
                for (var i = 0; i < item_img.length; i++) {
                    $('#ninja_slider').append('<div id="item_div' + i + '"><a href="javascript:void(0);" class="item_anchor"><img id="item_img' + i + '" src="' + $(item_img[i]).find('image').text() + '" class="ninja_item"></a></div>');
                }
            }
    
            function set_navigation(url, id) {
                $.ajax({
                    url: url,
                    async: false,
                    type: "GET",
                    data: "xml",
                    success: function (xml) {
                        $(xml).find("desk").each(function () {
                            var item_nav = document.getElementById(id),
                                click_item = document.createElement("div");
    
                            item_nav.appendChild(click_item);
                            click_item.className = click_item.className + "btn";
                        });
                    }
                });
            }
        </script>
    </body>
    
    </html>
    
    
    #IOSU导航{
    高度:13px;
    右:10px;
    /*右对齐*/
    /*左:10px*/
    /*左对齐*/
    底部:10px;
    /*位置:绝对位置*/
    /*如果需要设置*/
    /*边缘顶部:10px*/
    /*如果位置为绝对位置,则移除*/
    }
    #国际空间站导航btn{
    宽度:13px;
    高度:13px;
    背景:#eaeaea;
    边距:0 5px 0 0;
    -webkit边界半径:100%;
    -moz边界半径:100%;
    边界半径:100%;
    光标:指针;
    浮动:左;
    /*ie 7/8修复*/
    背景:url('../images/bull_off.png')不重复\9;
    }
    var xmlDoc=loadXMLDoc(“xml/xml_data.xml”);
    //通用加载xml数据函数
    函数loadXMLDoc(文件名){
    if(window.XMLHttpRequest){
    xhttp=newXMLHttpRequest();
    }else{//IE5和IE6的代码
    xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”);
    }
    xhttp.open(“GET”,filename,false);
    xhttp.send();
    返回xhttp.responseXML;
    }
    设置_滑块();
    //设置导航('xml/xml_data.xml','ioslider_nav');
    函数集\u滑块(){
    var item_div=$(xmlDoc.find('desk');
    var item_btn=$(xmlDoc.find('desk');
    var item_img=$(xmlDoc.find('desk');
    //ie 7/8的Object.bind()处理程序
    if(!Function.prototype.bind){
    Function.prototype.bind=函数(oThis){
    if(此的类型!=“函数”){
    //最接近ECMAScript 5的东西
    //内部可调函数
    抛出新的TypeError('Function.prototype.bind-尝试绑定的内容不可调用');
    }
    var aArgs=Array.prototype.slice.call(参数,1),
    fToBind=这个,
    fNOP=函数(){},
    fBound=函数(){
    返回fToBind.apply(这是fNOP和oThis的实例?这是:oThis,
    concat(Array.prototype.slice.call(arguments));
    };
    fNOP.prototype=this.prototype;
    fBound.prototype=新的fNOP();
    返回fBound;
    };
    }
    //创建主分区
    对于(变量i=0;i