将文件加载到html文件中然后对其进行一些操作将无法正常工作

时间:2016-07-29 18:03:16

标签: javascript jquery html svg

我正在尝试将几个文档加载(附加)到HTML中,一个标记专门用于对加载的文件执行某些操作,例如计算一些标记的数量,添加更多标记,将一些项目放入数组等。

我加载的文件都是SVG文件,它们与xml具有相似的结构,并且使用jQuery搜索标签很简单。但它似乎不起作用。

我要显示svg,当我尝试搜索特定标记时,我得到null ...

这是我的代码示例:

HTML:

<head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="stilovi/style.css">
    <title>Testing</title>
</head>

<body>
    <div id="avengers">
    <svg id="Layer_3" x="0" y="0" viewBox="-400 -100 1000 1000" xml:space="preserve" enable-background="new -400 -100 1000 1000"></svg>
    </div>
</body>

以下脚本我将文件附加到html:

<script src="jquery-3.1.0.min.js"></script>
<script>
     $(document).ready(function(){
        var svgArray = ['capt_am_optimizirano1.svg','hulk_optimizirano1.svg', 'iron_man_optimizirano1.svg']
        $.each ( svgArray, function (index, data){
        $.get( data, function(data){ 
              $(data).find("style").appendTo("#Layer_3");
              $(data).find("g").appendTo("#Layer_3");
              });
         });

        var amerpoly = document.getElementById('amer');
        console.log(amerpoly);
    });  
</script>

我做错了吗? 是否有另一种方法将文件加载到html中,然后使用其内容进行进一步处理?

1 个答案:

答案 0 :(得分:0)

在Daniel Beck和Marc B的帮助下,我想出了一个答案。

我将代码更改为:

$(document).ready(function(){
        var svgArray = ['capt_am_optimizirano1.svg','hulk_optimizirano1.svg', 'iron_man_optimizirano1.svg'];
        var lengthA = svgArray.length;          
        var ajaxGetSvg = [];

        for(var i=0; i<lengthA; i++){
            ajaxGetSvg.push(
                $.get( svgArray[i], function(data){ 
                    $(data).find("style").appendTo("#Layer_3");
                    $(data).find("g").appendTo("#Layer_3");
              })
            );
        }
        $.when.apply($, ajaxGetSvg).then(function() {
            var amerpoly = document.getElementById('amer').querySelectorAll('polygon');
            console.log(amerpoly);
            console.log(amerpoly.length);
        });
});

所以我正在使用$ .when的目的是等待所有的ajax请求完成,然后在函数中我正在做一些操作(这只是一个例子)。

我还在for循环中提前生成请求,因为我将来可能会更改我将使用的文件数。将所有请求保存在列表中并将该列表传递到$ .when函数中。 请注意,当传入列表时我除了列表之外还使用.apply,因为$ .when不接受数组。 以下是我用来获得答案的链接。有关$ .when,$。apply和有关stackoverflow的答案的文档。

$.when

$.apply

帮助我生成并传递$ .when .. Here

内的列表的答案