使用 jQuery 将元素写入 textarea

Posted

技术标签:

【中文标题】使用 jQuery 将元素写入 textarea【英文标题】:Write elements to textarea using jQuery 【发布时间】:2021-10-04 05:57:28 【问题描述】:

我想从 a 中获取文本,并在文本中添加一些属性,并在按下按钮时将其显示在另一个文本中。

这是我的代码的一部分 - 如果我使用 console.log() 将记录正确的文本,但 append(x) 只写入 option[i] 值而没有任何 html 代码。

这里应该有什么解决办法?

var options;
$(function() 
  options = $('div#Thelper2_container textarea').val().split('\n');
  $.fillTextArea();

);

$.fillTextArea = function() 
  for (let i = 0; i < options.length; i++) 
    var y = i + 1;
    var x = String('<span class="textToSelect" value="' + y + '"></span>' + options[i] + '</span>\n');
    $('div#Thelper4_container textarea').append(x);
  
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="Thelper2_container">
  <textarea rows="5" cols="100">Line 1
Line 2
</textarea>
</div>
<div id="Thelper4_container">
  <textarea rows="5" cols="100"></textarea>
</div>

【问题讨论】:

使用 val 而不是 append 这样之前的值会被覆盖,所以只有最后一次迭代的文本会在textarea中 查看我的UPDATED answer 了解我的意思 我给你做了一个 sn-p 并删除了一个 ) - 如果你实现接受的答案,你的代码也会附加空行 【参考方案1】:

使用 val 而不是 append。 Append 用于非表单字段容器元素

虽然您可以追加到文本区域,但是当您追加时,您追加的是 HTML 而不是文本。

另外你有太多的&lt;/span&gt;s 并且 span 没有值。我改成data-value

最后我过滤空行

const $txtarea = $('#Thelper2_container textarea');
const $output =  $('#Thelper4_container textarea');
const splitLines = val => val
  .split('\n')
  .filter(line => line.trim() !== "") // drop empty lines
  .map((line,i) => `<span class="textToSelect" data-value="$i+1">$line.trim()</span>`)
  .join("\n");

$(function() 
  $output.val(splitLines($txtarea.val()));
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="Thelper2_container">
  <textarea rows="5" cols="100">Line 1
Line 2
</textarea>
</div>
<div id="Thelper4_container">
  <textarea rows="5" cols="100"></textarea>
</div>

【讨论】:

【参考方案2】:

试试这个:

$('div#Thelper4_container textarea').append(document.createTextNode(x));

请注意“document.createTextNode”。

【讨论】:

这是一个低效的解决方案。您基本上在附加之前附加您转换为文本的 html。它也不会删除空行 是的,之前的 String() 没用。我的解决方案可能并不优雅。【参考方案3】:

您在字符串末尾附加另一个&lt;/span&gt;\n 而不在任何地方打开它。

试试这个代码,看看它是否有效:

var x = String('<span class="textToSelect" value="' + y + '"></span>' + options[i] + '\n');

【讨论】:

以上是关于使用 jQuery 将元素写入 textarea的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 或 jQuery 将元素写入子 iframe

jQuery data()无法写入HTML元素? [重复]

具有动态内容的动态附加 iframe 在内容元素上写入 jquery 事件句柄不起作用

Jquery属性和元素操作,ajax

jQuery获取元素

jquery怎样把日期控件输入的日期写入span,绑定日期控件的输入框不输入任何内容?