我正在尝试将几个文档加载(附加)到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中,然后使用其内容进行进一步处理?
答案 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 .. Here
内的列表的答案