我正在创建一个使用 fetch 来检索外部 HTML 的脚本,然后通过一些操作创建 2 个 HTMLcollection 并最终遍历它们以显示一个 div,其中一个元素来自第一个集合,一个元素来自第二个集合。这是我写的一些代码:
<section id="to_take">
<p>THE EUROPEAN PARLIAMENT AND THE COUNCIL OF THE EUROPEAN UNION,</p>
<p>Having regard to the Treaty establishing the European Community, and in particular Article 175(1) thereof,</p>
<p>Having regard to the proposal from the Commission,</p>
<p>Having regard to the opinion of the European Economic and Social Committee <a href="#1" id="1back">(1)</a>,</p>
<p>Having consulted the Committee of the Regions,</p>
<p>Acting in accordance with the procedure laid down in Article 251 of the Treaty <a href="#2" id="2back">(2)</a>,</p>
<p>Whereas:</p>
<ol>
<li>some li elements that I'm not posting because they are too much.</li>
</ol>
<p>another P element</p>
</section>
这是脚本采用的 HTML 代码,其他文档是相同的,但使用的是另一种语言。
脚本是:
async function request(input_1, input_2){
var left = await fetch(input_1);
var right = await fetch(input_2);
var text_left = await left.text();
var text_right = await right.text();
var parser = new DOMParser();
var part_1 = parser.parseFromString(text_left, "text/html");
var parser_2 = new DOMParser();
var part_2 = parser_2.parseFromString(text_right, "text/html");
var collection_1 = part_1.getElementById("to_take").children;
var collection_2 = part_2.getElementById("to_take").children;
display_elements(collection_1, collection_2);
}
function display_elements(array_1, array_2){
var article = document.getElementById("contenitore");
var counter = 0;
for (var i in array_1){
var container = document.createElement("div");
container.appendChild(array_1.item(counter));
container.appendChild(array_2.item(counter));
article.appendChild(container);
counter++;
}
}
该脚本实际上可以很好地在正确的页面部分显示它必须显示的内容,但它有 1 个奇怪的行为和 1 个错误。首先:它从 2 个集合中获取第一个元素,然后脚本跳过第二个元素并转到第三个元素,然后再次获取 1 个元素并跳过下一个元素。第二:它给了我这个错误:无法在'Node'上执行'appendChild':参数1不是'Node'类型。我试图修改一些元素,但基本上我不明白为什么它不能以正确的方式工作。我尝试更改集合上的方法,使用 While 而不是 for,但我不理解错误,因为它适用于某些元素而不适用于其他元素。