0

これは私の簡単なスクリプトで、数値をスパンからテキストエリアに配置する必要があります。

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 を追加する必要がありますか?

最後の質問 - テキストエリアの内容をクリアせずに変更するにはどうすればよいですか? 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

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 に答える
0

@shadow に同意します。class代わりにa を使用する必要がありID'sます。linkとして使用しているとします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 に答える