Как сохранить содержимое, возвращаемое text () в jquery? - PullRequest
0 голосов
/ 12 февраля 2020

Я пытался извлечь полнотекстовое содержимое из документа HTML для вычислений, и мне удалось найти решение для этого в jquery, но оно довольно частичное ... Вывод соответствует ожидаемому для следующий код:

$(document).ready(function(){ 
    console.log($("*").text())
})

Это вывод, о котором я говорил. Я хочу сохранить содержимое консоли в переменной. Когда я пытался сделать что-то вроде

var words = []
$(document).ready(function(){ 
    words.push($("*").text())
})
console.log(words)

, он возвращает undefined . Я узнал, что это из-за асин c обратного вызова. Как мне подойти к этому вопросу. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Один из способов сделать это - получить все элементы в теле, итерировать по ним, чтобы получить их текстовое содержимое. С jQuery это будет выглядеть примерно так:

$(document).ready(function() {
  
  let content = []
  
  $('body * :not(script)').each((i, el) => {
    content.push($(el).text())
  })
  
  console.log(content)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<aside>
  <h1>JS Documentation</h1>
  <ul>
    <li>Introduction</li>
    <li>What you should already know</li>
  </ul>
</aside>
<main>
  <h2>Introduction</h2>
  <p>JavaScript is a cross platform...</p>
</main>

Примечание : селектор :not(script) пропустит любые теги <script> (если имеются) в <body> document.

Подсказка : если вам нужно избавиться от пробелов, вы можете использовать что-то вроде этого:

text().trim().replace(/\r?\n|\r/g, '')
0 голосов
/ 12 февраля 2020

Рассмотрим ваш селектор, я думаю, что ваша область захватывает слишком много элементов. Посмотрите на следующее.

$(function() {
  var words = [];
  $("body").children().not("script").each(function(i, el) {
    words.push($(el).text().trim());
  });
  console.log(words);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1>Introduction</h1>
<p>This is a paragraph. </p>
<div class="footer">02.12.2020</div>

Это будет повторять все дочерние элементы тега Body. Он будет читать текст каждого элемента и вводить его в свою собственную запись в массиве. Ваш результат будет выглядеть так:

[
  "Introduction",
  "This is a paragraph.",
  "02.12.2020"
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...