0

HTMLテーブルへの入力ボタンの挿入とjavascriptで押されたボタンの検出に問題があります。すべて動作しますが、JavaScriptで警告すると、常に最初の行の要素が表示されることがわかります。また、最後の行の要素を押すと。

今、私はコードでよりよく説明します。このようにして、テーブルにボタンを入力すると、すべて正常に機能します。

//$shows is an array
$size = count($shows);


if ($size != 0) {   
echo "<table class='datatable'>";
echo "<thead>";
echo "<tr>";
echo "<th>ID</th>";
echo "<th>Name</th>";
echo "<th>Language</th>";
echo "<th>Add</th>";
echo "</tr>";
echo "</thead>";
echo "<tbody>"; 
}

for($i = 0 ; $i < $size; ++$i) {

echo "<tr>";
echo "<td>{$shows[$i]->id}</td>";
echo "<td>{$shows[$i]->name}</td>";
echo "<td>{$shows[$i]->language}</td>";
echo "<td>";
echo "<input type='hidden' id='add' value='yes' />";
echo "<input type='hidden' id='seriesid' value={$shows[$i]->id} />";
echo "<input type='hidden' id='lang' value={$shows[$i]->language} />";
echo "<input type='submit' id='name-submit' class='button plain' value='ADD'>";
echo "<div id='add-data'></div>";
echo "</td>";
echo "</tr>";
}


  if ($size != 0) {
  echo "</tbody>";
  echo "</table>";
  }

このようにして、テーブル内のすべての情報を確認でき、各行のボタンも表示されます。次に、すべての行で押されたボタンを検出したいと思います。このファイルはjavascriptにあります。

$('input#name-submit').click(function() {

    var add = $('input#add').val();
    var seriesid = $('input#seriesid').val();
    var lang = $('input#lang').val();
    alert(lang);
    if ($.trim(add) != '') {

        $.post('AccessDB.php', {add:add, seriesid:seriesid, lang:lang}, function(data) {
            alert(data);
        });
    }

});

また、このようにして、押されたボタンを検出し、lang要素でアラートを表示できますが、lang要素は常に最初の行の要素です。(別のlang要素を使用して)最後の行のボタンを押すと、常に最初の行の要素が表示されます。seriesidたとえば、またはname要素を使用する場合、それは常に最初の行の要素です。では、他の行も検出するにはどうすればよいですか?

4

1 に答える 1

1

同じIDを何度も使用しています。クラス使用の代わりにクラスを使用してください

echo "<input type='hidden' class='add' value='yes' />";

それ以外の

echo "<input type='hidden' id='add' value='yes' />";

そしてこれを使う

    var add = $(this).parent().find(".add").val();
    var seriesid = $(this).parent().find('.seriesid').val();
    var lang = $(this).parent().find('.lang').val();

それ以外の

    var add = $('input#add').val();
    var seriesid = $('input#seriesid').val();
    var lang = $('input#lang').val();
于 2012-10-20T11:41:06.380 に答える