function getNotRec(articleLink) {
var req = new XMLHttpRequest();
req.open("GET", articleLink, true);
req.onreadystatechange = function(aEvt) {
if (req.readyState === 4) {
if (req.status === 200) {
//console.log(req.responseText);
findNotRecTag(req.responseText);
}
else {
console.log("Error loading page\n");
}
}
};
req.send(null);
}
function findNotRecTag(htmlText) {
var notRec = htmlText.getElementsByClassName("t_black"); //here
for (var i = 0; i < notRec.length; i++) {
console.log("notrec" + notRec[i].innerText);
}
}
我希望使用JavaScript在另一个网站上获得一些“课堂”。 所以我正在使用XMLHttpRequest并成功接收。
但是当我尝试从收到的内容中提取某些类时,在控制台上出现错误:
"Uncaught TypeError: Cannot read property 'getElementsByClassName' of undefined",
"Uncaught TypeError: Cannot read property 'querySelector' of undefined"
我认为Chrome知道我在做什么,但她在..我想不是那样
主要问题:有什么方法在字符串上使用getElementsByClassName
或类似的东西?
我也尝试过querySelector
,但是它不起作用(请参阅上面的错误消息)。
答案 0 :(得分:0)
req.responseText
显然是undefined
。要回答您的核心问题,以下是如何从string
中选择元素的方法:
// here's your string
const htmlText = `<div><p class="p">fsdf</p><p class="p">wfdfds<p></div>`
// create an element
const fakeEl = document.createElement('div')
// and put the htmlText as innerHTML on that element
fakeEl.innerHTML = htmlText;
// now you can use all kinds of selector methods on that element
console.log(fakeEl.getElementsByClassName('p'));
console.log(fakeEl.querySelectorAll('.p'));