我只需要從我的陣列中獲取前 6 個元素。我已經用那個 .slice(0, 6) 試過了,但它不會作業。也許有人有想法。我的陣列有大約 15 個節點,所以我只需要在我的表格中顯示前 6 個。
let xmlContent = '';
let tableBooks = document.getElementById('books');
fetch('info2.xml').then((response)=> {
response.text().then((xml)=>{
xmlContent = xml;
let parser = new DOMParser();
let xmlDOM = parser.parseFromString(xmlContent, 'application/xml');
let container = xmlDOM.querySelector("[ID='91961']");
let books = container.querySelectorAll("SAISON");
const rows2 = books.from(document.querySelectorAll("tr")).slice(0,6)
rows2.forEach(bookXmlNode => {
let row = document.createElement('tr');
//author
let td = document.createElement('td');
td.innerText = bookXmlNode.children[0].innerHTML;
row.appendChild(td);
// title
td = document.createElement('td');
td.innerText = bookXmlNode.children[1].innerHTML " - " bookXmlNode.children[2].innerHTML;
row.appendChild(td);
//description
td = document.createElement('td');
td.innerText = bookXmlNode.children[3].children[2].innerHTML " €";
row.appendChild(td);
tableBooks.children[0].appendChild(row);
});
});
});
uj5u.com熱心網友回復:
我只需要從我的陣列中獲取前 6 個元素。
querySelectorAll不回傳陣列,它回傳一個NodeList.
我已經用那個 .slice(0, 6) 試過了,但它不會作業。
那是因為NodeList實體沒有那個方法。
您可以將陣列一應用于它們:
const firstSix = Array.prototype.slice.call(document.querySelectorAll("selector"), 0, 6);
或者,您可以將元素展開到一個陣列中,然后slice在其上使用:
const firstSix = [...document.querySelectorAll("selector")].slice(0, 6);
或通過Array.from而不是傳播創建陣列:
const firstSix = Array.from(document.querySelectorAll("selector")).slice(0, 6);
uj5u.com熱心網友回復:
第一個解決方案是,如果您不需要渲染其他元素,則不渲染元素即可開始。
books.slice(0,5).forEach(... your code ...)
如果您想要呈現元素,并且仍然想要選擇行,您可以只使用 CSS Selector nth-child來選擇 6 個表格行
console.log(document.querySelectorAll("#books > tbody > tr:nth-child(-n 6)"))
<table id="books">
<tbody>
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr><td>3</td></tr>
<tr><td>4</td></tr>
<tr><td>5</td></tr>
<tr><td>6</td></tr>
<tr><td>7</td></tr>
<tr><td>8</td></tr>
<tr><td>9</td></tr>
<tr><td>10</td></tr>
</tbody>
</table>
現在你的代碼不起作用的原因是因為 aquerySelectorAll回傳一個 html 集合,所以你需要將它轉換為陣列。
const rows1 = [...document.querySelectorAll("tr")].slice(0,6);
// or
const rows2 = Array.from(document.querySelectorAll("tr")).slice(0,6)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/366733.html
標籤:javascript 数组
上一篇:將二維陣列傳遞給c中的函式時出錯
下一篇:來自檔案的數學.txt
