nodeName返回的频率高于预期

时间:2014-02-21 02:58:11

标签: javascript xml nodename

我有一些代码正在读取XML文档,然后使用它来构建HTML页面。与降价类似,我想。我已经简化了下面的代码,但实际上最后使用CAROUSEL的JS系列正在查看XML,但它创建了7个轮播div而不是我想要的1。我明白为什么它会返回7次(有点),但我如何让它只创建一次。 CAROUSEL标签内的ITEM标签(参见XML部分)是指示特定轮播内应该有哪些图像。

JS:

         var col9div = null;
    if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
            var  xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET",'xml/index'+page_counter+".xml",false);
        xmlhttp.send();
        xmlDoc=xmlhttp.responseXML;
        var col9div = document.createElement("div");

                                });
                                var tempvar = arr.length;
                                console.log(tempvar);
        $(col9div).addClass("col-md-9");
        $("#bannersize").append(col9div);
        flush();
        function flush(){
            var activity_element_idcounter = 0;
            var module_element_idcounter = 0;
            var x=xmlDoc.getElementsByTagName("MODULE");

            for (i=0;i<x.length;i++)
            {
                var getlastli = $(".sidecounter:last");

                module_element_idcounter++;
                col9div.insertAdjacentHTML('beforeend', '<div class="row"><div class="col-md-12 well"' + ' id="module' + module_element_idcounter + '"><div id="skrollr-div' + module_element_idcounter + '"></div></div>');
                var scanner = x[i].getElementsByTagName("*");
                for (var q=0;q<scanner.length;q++){
                    activity_element_idcounter ++;

                $.each(scanner[q].childNodes, function(){
else if (scanner[q].nodeName === "CAROUSEL"){
do something here
}

XML:

<MODULE>
        <CAROUSEL>
                <ITEM>assets/images/index5/tehran-carousel/tehran-day-and-night.jpg</ITEM>
                <ITEM>assets/images/index5/tehran-carousel/tehran-day-and-night-1.jpg</ITEM>
                <ITEM>assets/images/index5/tehran-carousel/tehran-bazaar-entrance.jpg</ITEM>
        </CAROUSEL>
</MODULE>

感谢, 罗比

1 个答案:

答案 0 :(得分:0)

我认为这是在你没有向我们展示的某种循环中执行的,但是你没有使用任何条件逻辑。你似乎得到的是三个单独的陈述:

// Always just evaluates to false and does nothing; the return value of
// getElementsByTagName() does not have a nodeName property
xmlDoc.getElementsByTagName("MODULE").getElementsByTagName("*").nodeName === "CAROUSEL"

{
    // Always executes - simply a statement inside some curly braces
    $("#module" + module_element_idcounter).append("...");
}

// Empty statement - does nothing
;

为了让它以你想要的方式工作,你可能需要在某个地方使用if语句,但为了让我们帮助你,你需要向我们展示更多你的代码而不是微小的代码您提供的抽样。