亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何獲得一個字符串,該字符串是元素的 text(),但在 div 之后添加了空格?

我如何獲得一個字符串,該字符串是元素的 text(),但在 div 之后添加了空格?

素胚勾勒不出你 2022-12-22 11:51:51
JSFiddle 在這里你好!我正在嘗試從元素的 .contents().text() 輸出一個字符串......但每個 div 的內容之間有空格(不改變實際的 DOM)。HTML:<!-- I don't have control over how many divs are in .myTextArea, or what text. It's really dynamic. There are also lists, etc.--tons of different types of elements. --><div class="myTextArea">  <div>Hey there!</div><div>I like turtles.</div><div>Do you like them?</div></div>查詢:var myTextDescription = $(".myTextArea").contents().text();console.log(myTextDescription);目前,它輸出:Hey there!I like turtles.Do you like them?...這就是我希望它輸出的內容:相同的內容,但每個 div 的內容后有空格:Hey there! I like turtles. Do you like them?注意:關于 SO 的其他答案讓您更改實際的 DOM(又名,他們在頁面上的元素之后添加實際的空格),然后他們只獲取 text() 字符串。我不想更改 DOM。另外,我不能改用 .html() 并嘗試去除一些東西,因為會有太多類型的元素需要擔心。JSFiddle 在這里
查看完整描述

2 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

您快到了。替換.text()為:


//get text content of all nodes

.map((i,d) => d.textContent).get()

//remove white space

.filter(t => !!t.trim())

//join the text from all nodes with a space

.join(' ');

查看下面的演示:

var myTextDescription = $(".myTextArea").contents().map((i,d) => d.textContent).get().filter(t => !!t.trim()).join(' ');


console.log(myTextDescription);

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="myTextArea">


  <div>Hey there!</div><div>I like turtles.</div><div>Do you like them?</div>


</div>

如果您需要排除 div 中的文本,例如使用類exclude,您可以:not()像這樣使用 psedo 選擇器:

... .contents(':not(".exclude")') ....

..如以下演示所示:

var myTextDescription = $(".myTextArea").contents(':not(".exclude")').map((i,d) => d.textContent).get().filter(t => !!t.trim()).join(' ');


console.log(myTextDescription);

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="myTextArea">


  <div>Hey there!</div><div class="exclude">Please exclude this!</div><div>I like turtles.</div><div>Do you like them?</div><div class="exclude">Please exclude this too!</div>


</div>


查看完整回答
反對 回復 2022-12-22
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

解決此問題的一種方法是使用 JavaScript 的 querySelectorAll 方法返回 myTextArea 元素中所有 DIV 的列表。然后,您可以遍歷列表中的每個元素,獲取其 innerText 并在每個元素后放置一個空格:


var myTexts = document.querySelectorAll('.myTextArea > div');

var show = document.querySelector('#show');

var output = "";


for (var x = 0; x < myTexts.length; x++) {

  if (output == "") { // Skip adding space before first string

    output = myTexts[x].innerText;

  } else { // Add space before each appended string

    output += " " + myTexts[x].innerText;

  }

}


show.innerText = output;

<div class="myTextArea">

  <div>Hey there!</div>

  <div>I like turtles.</div>

  <div>Do you like them?</div>


</div>


<div id="show"></div>


查看完整回答
反對 回復 2022-12-22
  • 2 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號