为什么 DocumentFragment 没有 getElementsByName?

Dum*_*mmy 6 javascript documentfragment html-templates

我按照MDN 上给出的说明使用<template>. 与示例中给出的略有不同,我的代码是:

<template id="template">
    <tr>
        <td name="id"></td>
        <td name="name"></td>
        <td name="size"></td>
        <td name="Status">
        </td>
    </tr>
</template>
Run Code Online (Sandbox Code Playgroud)
// ...
const item = document.importNode(template.content, true);
item.getElementsByName("id")[0].textContent = token;
item.getElementsByName("name")[0].textContent = file.name;
item.getElementsByName("size")[0].textContent = file.size;
fileList.appendChild(item);
// ...
Run Code Online (Sandbox Code Playgroud)

然而,似乎item,其中__proto__isDocumentFragment没有getElementsByName方法。现在有getElementById和,这对我来说很困惑吗querySelector

有什么理由吗?

在相关情况下,我的浏览器是 FireFox Quantum 69.0.1 和 Chrome Canary 79.0.3918.0。

Bar*_*mar 4

DocumentFragment不实现任何方法getElementsBy*。但是,它确实实现了querySelector(),因此您可以使用

item.querySelector("[name=name]").textContent = token;
Run Code Online (Sandbox Code Playgroud)