英文:
javascript could not find the tr element
问题
我访问了一个私人网站,想要提取一个 tr
元素的内容。然而,即使我缓存了页面并通过打开文本文件确认了 tr
元素的存在,document.querySelector("tr")
仍然无法获取内容。而且,即使在浏览器中打开缓存的页面,我仍然无法得到结果。为什么会这样?
英文:
I visited a private website, and I want to retrieve the content of a tr
element. However, document.querySelector("tr")
cannot obtain the content even though I cached the page and confirmed that the tr element exists by opening the text file. Furthermore, even when I opened the cached page in the browser, I still couldn't get the result. Why is this?
答案1
得分: 0
如果HTML文本包含不完整或无效的标签,解析过程可能无法查询tr
元素。
例如
// 缺少表格
const inValidHTML = `
<tr><td>第1行,第1列</td><td>第1行,第2列</td></tr>
<tr><td>第2行,第1列</td><td>第2行,第2列</td></tr>
`
// 正常
const validHTML = `<table>
<tr><td>第1行,第1列</td><td>第1行,第2列</td></tr>
<tr><td>第2行,第1列</td><td>第2行,第2列</td></tr>
</table>
`
// 正常。将tr更改为"mytr"
const validHTML2 = `
<mytr><td>第1行,第1列</td><td>第1行,第2列</td></mytr>
<mytr><td>第2行,第1列</td><td>第2行,第2列</td></mytr>
`
const parser = new DOMParser()
const doc = parser.parseFromString(inValidHTML, 'text/html')
const trElements = doc.querySelectorAll('tr')
console.log(trElements.length) // 0
console.log(parser.parseFromString(validHTML, 'text/html').querySelectorAll('tr').length) // 2
console.log(parser.parseFromString(validHTML2, 'text/html').querySelectorAll('mytr').length) // 2
英文:
If the HTML text contains incomplete or invalid tags, the parsing process may fail to query the tr
element.
for example
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
// missing table
const inValidHTML = `
<tr><td>Row 1, Column 1</td><td>Row 1, Column 2</td></tr>
<tr><td>Row 2, Column 1</td><td>Row 2, Column 2</td></tr>
`
// ok
const validHTML = `<table>
<tr><td>Row 1, Column 1</td><td>Row 1, Column 2</td></tr>
<tr><td>Row 2, Column 1</td><td>Row 2, Column 2</td></tr>
</table>
`
// ok. change tr to "mytr"
const validHTML2 = `
<mytr><td>Row 1, Column 1</td><td>Row 1, Column 2</td></mytr>
<mytr><td>Row 2, Column 1</td><td>Row 2, Column 2</td></mytr>
`
const parser = new DOMParser()
const doc = parser.parseFromString(inValidHTML, 'text/html')
const trElements = doc.querySelectorAll('tr')
console.log(trElements.length) // 0
console.log(parser.parseFromString(validHTML, 'text/html').querySelectorAll('tr').length) // 2
console.log(parser.parseFromString(validHTML2, 'text/html').querySelectorAll('mytr').length) // 2
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论