0

这是我的简单脚本,它应该将数字从 span 放入 textarea:

function get_post ()
{
document.getElementById("text").innerHTML = ">>"+document.getElementById("link").innerHTML;
}

<textarea id="text"></textarea>
<br /><br />No. <a href="#" onClick="get_post();"><span id="link">1948491</span></a>
<br /><br />No. <a href="#" onClick="get_post();"><span id="link">42342342</span></a>

但它只适用于第一个元素。我怎样才能让它在多个元素上工作?具有共同 id/class 的解决方案好吗?或者也许我应该为每个 a 或 span 元素添加自定义 id/class?

最后一个问题 - 我如何在不清除的情况下更改 textarea 内容?innerHTML 正在删除我已经输入的所有内容。

问候,

马特

4

3 回答 3

3

它只获取第一个元素的原因是因为id值是唯一的,因此您只能在 DOM 中获取元素的第一个实例。

使用 JQuery,您可以使用this关键字来获取span元素,如下所示:

$("a.link").click(function (e) {
    e.preventDefault();
    get_post(this);
});      

function get_post (t)
{
    var link = $(t);
    var textarea = $("#text");
    var span = link.find("span");

    textarea.val(">>" + span.html());
}

确保向链接添加一个类以正确识别它们:

<a href="#" class="link">

这是一个工作示例

于 2013-09-20T10:40:12.303 回答
0

我同意@shadow,你应该使用 aclass而不是ID's. 说你正在使用linkas class。之后,以下代码应该可以正常工作:

$('.link').on('click',function(e){
  e.preventDefault();  // as you are using anchor tag.
  var x= $('#text').val(),
  y = $(this).text();
  $('#text').val(x+y) // if you want previous text too.
  $('#text').val(y) // if you want new text only.
});
于 2013-09-20T11:00:20.217 回答
0

id 在 DOM 中必须是唯一的,如果不是,则只获取第一个实例,使用 class 标识多个元素

<textarea id="text"></textarea>
<br /><br />No. <a href="#" class="link"><span>1948491</span></a>
<br /><br />No. <a href="#" class="link"><span>42342342</span></a>
<script>
$('a.link').click(function() {
$("#text").val($("#text").val() + ">>" + $(this).find('span').html());
return false;
});
</script>
于 2013-09-20T10:58:29.577 回答