css 如何在一行中复制不同跨度的文本?[关闭]

wribegjk  于 2023-05-19  发布在  其他
关注(0)|答案(3)|浏览(131)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
7天前关闭
Improve this question
我有代码:

<div class="text">
   <span class="word">
      Hello
   <span/>
   <span class="word">
      world!
   <span/>
<div/>

我想把这段文字复制到"Hello world!"
但当我复制它时,它看起来像:

Hello
world!
x759pob2

x759pob21#

在修复结束标记之后,您可能已经完成了第一种方法,但是需要使用第二种方法

let text = document.querySelector(".text").textContent;
console.log(text); // does not do what you want

text = [...document.querySelectorAll(".text .word")]
  .map(elem => elem.textContent.trim()) // trim each element's text
  .join(" "); // join with a space
console.log(text); // works better
<div class="text">
   <span class="word">
      Hello
   </span>
   <span class="word">
      world!
   </span>
</div>

jQuery如果你想要的话

let text = $(".word").text().trim(); // does not work
console.log(text); 

text = $(".word")
  .map(function() { return $(this).text().trim() })
  .get()
  .join(" "); // works better but is not more elegant than the plain JS one
console.log(text);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<div class="text">
   <span class="word">
      Hello
   </span>
   <span class="word">
      world!
   </span>
</div>
6tr1vspr

6tr1vspr2#

可能是更简单的方法

var words = $('.text .word').map(function() {
    return $(this).text().trim();
}).get();

var output = words.join(' ');
console.log(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="text">
  <span class="word">
      Hello
   </span>
  <span class="word">
      world!
   </span>
</div>
fcg9iug3

fcg9iug33#

目前还不清楚,你是想从网页上的所有span中复制文本,还是你的HTML代码只是一个更大的网页的一部分,你只想用word类从span中复制文本。
如果你想只复制带有word类的span中的文本,你可以使用以下代码:

  • 查找具有word类的所有span,
  • 循环遍历找到的span并连接其中的文本。
let list_of_spans = document.getElementsByClassName("word") // get all DOM span objects with class "word"
let copied_text = '' // initialize an empty string
for (const current_span of list_of_spans) {
    copied_text += current_span.innerText // add text from a given span object to copied_text string
}
console.log(copied_text)
<div class="text">
   <span class="word">
      Hello
   </span>
   <span class="word">
      world!
   </span>
   <span class="something-else">
      I like stack.
   </span>
</div>

相关问题