Возможно, это будет простое исправление, но я не могу понять это. В основном я открываю внешнюю веб-страницу, и я хочу сохранить каждое из слов на этой веб-странице (просто слова без тегов или что-то еще) в массив, чтобы я мог выводить, сколько раз каждое слово происходит на странице.Как считать каждое слово на внешней веб-странице?
Это внешняя страница, я использую для тестирования:
<html>
<body>
<p> Hello world! <br/>
<a href = ”link.html”> Click <b> here </b> </a>
<br/> Goodbye world!
</p>
</body>
</html>
И мой выход таков:
Нажмите: 1 раз Прощай, мир!: 1 раз, Hello world!: 1 раз, здесь: 1 раз
Я близко, мне просто нужно "Прощай, мир!" и «Привет, мир!» для разделения в пространстве, но я не могу найти способ сделать это.
Вот мой код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var w;
function openFile(url) {
w = window.open();
w.location = url;
}
var mainArray = [];
var pre;
function retrieveText() {
pre = document.getElementById("count");
getwords(w.document.body);
count();
}
function count() {
mainArray.sort();
var current = null;
var cnt = 0;
for (var i = 0; i < mainArray.length; i++) {
if (mainArray[i] != current) {
if (cnt > 0) {
document.write(current + ' : ' + cnt + ' times<br>');
}
current = mainArray[i];
cnt = 1;
} else {
cnt++;
}
}
if (cnt > 0) {
document.write(current + ' : ' + cnt + ' times');
}
}
function getwords(node) {
mainArray = w.document.body.innerHTML.replace(/^\s*<[^>]*>\s*|\s*<[^>]*>\s*$|>\s*</g,' ').split(/<[^>]*>/g);
}
</script>
</head>
<body>
<p>Filename: <input id = "url" name="url" size=15 type="Text"/></p>
<a href="javascript:openFile(document.getElementById('url').value)">
Open document</a>
</br>
<a href="javascript:retrieveText()">Retrieve text</a><br/>
</br>
<ul id ="arrlist"></ul>
</body>
</html>
Я просто изменил getwords(), как вы сказали, и теперь mainArray выглядит это для меня: [ «[объект», «HTMLBodyElement]»] –
я попытался немного изменен Например, поскольку мой Chrome не позволяет читать локальные файлы. Для вашей ситуации попробуйте использовать только одну строку для функции: ** mainArray = node.innerText.replace (/ \ s +/g, ","). Split (","); ** – Alexey
, который сработал! спасибо моему другу :) не могли бы вы отредактировать ответ, который вы разместили, чтобы я мог отметить его как решенный? –