我需要创建一个javacript函数来下载网页的html源代码并返回提到CSS类的次数。
var str = document.body.innerHTML;
function getFrequency(str) {
var freq = {};
for (var i=0; i<string.length;i++) {
var css_class = "ENTER CLASS HERE";
if (freq[css_class]) {
freq[css_class]++;
} else {
freq[css_class] = 1;
}
}
return freq;
};
我在这里做错了什么?
答案 0 :(得分:2)
我在这里做错了什么?
我不想说,但从根本上说......一切。获取有关HTML的信息不涉及字符串函数或正则表达式。 HTML无法以这种方式处理,其规则过于复杂。
HTML需要由HTML解析器解析。
在浏览器中有两种可能的情况:
如果你使用当前的document
(就像你似乎那样),那么解析已经由浏览器完成了。
计算CSS类的使用次数实际上与查找具有该类的HTML元素的数量相同。 可以通过document.querySelectorAll()
和CSS选择器轻松完成。
var elements = document.querySelectorAll(".my-css-class");
alert("There are " + elements.length + " occurrences of the class.");
如果您有从某处加载的HTML字符串,则需要先解析它。在JavaScript中,您可以让浏览器轻松地为您解析HTML:
var html = '<div class="my-css-class">some random HTML</div>';
var div = document.createElement("div");
div.innerHTML = html; // parsing happens here
现在,您可以采用与上述相同的策略,仅使用div
作为选择器上下文:
var elements = div.querySelectorAll(".my-css-class");
alert("There are " + elements.length + " occurrences of the class.");