1

JavaScriptを使用してボタンの値を取得する方法を理解しようとしています。phpコードのwhileステートメントを使用して生成されたボタンがいくつかあるため、nameidはすべて同じです。それらの唯一の違いは値です。

私のphpコードの一部:

while($row = mysql_fetch_array($result))
     {
     echo "<tr>";
     echo "<td align=\"center\"><input type=\"button\" id=\"details\" name=\"details\" value=\"" . $row['mcn'] . "\" onClick=\"MCNdetails()\"></td>";
     echo "</tr>";
     }

私が達成しようとしているのは、このボタンがクリックされると、JavaScriptアラートがこのレコードの詳細とともに表示されることです。

(FYI-「Faker」は、このテーブルが含まれるフォーム名です。)

私のJavaScriptコード:

function MCNdetails()
        {

        var buttonDetails = document.Faker.details;
        var buttonValue = buttonDetails.value;

        if (buttonValue === "2700-2057" )
            {
            alert ("Details are here");
            return;
            }
        else
            {
            alert ("No Dice " + buttonValue);
            return;
            }

        }

私は約持っています。これまでに300件のレコード。いずれかのボタンをクリックすると、常にelseステートメントが表示されます。私は次のようにidで要素を取得しようとしました:

function MCNdetails()
        {

        var buttonDetails = document.getElementById("details");
        var buttonValue = buttonDetails.value;

        if (buttonValue === "2700-2057" )
            {
            alert ("Details are here");
            return;
            }
        else
            {
            alert ("No Dice " + buttonValue);
            return;
            }

        }

ただし、どのボタンをクリックしたかに関係なく、常に最初のボタンの値が返されます。

私はこのサイトを検索するだけでなく、いくつかのGoogle検索を実行しましたが、ボタンが生成される同じシナリオを見つけることができません。

ヘルプやポインタをいただければ幸いです。お時間をいただきありがとうございます:)

4

2 に答える 2

6

次のようなものを試してください

<script type="text/javascript">
  function getVal(value)
  {

   alert(value);
  }
 </script>
 <input type="button" value="Add" onclick="getVal(this.value)">
于 2012-10-30T03:36:42.990 に答える
4

複数の要素に同じIDを使用することは無効なhtmlであることに注意してください。ただし、ほとんどの(すべて?)ブラウザーはそれについて大騒ぎしない傾向があり、ページを非常に快適に表示します。そのため、使用しようとするdocument.getElementById("details")と、常にそのIDの最初のボタンが表示されます。ブラウザはどのボタンを意味するのかをどのように認識しますか?

そうは言っても、thisクリック時に関数呼び出しを渡すと、次のようになります。

onClick=\"MCNdetails(this)\"

...クリックされた特定のボタンへの直接参照を関数に提供します。それで:

function MCNdetails(btn) {
    var buttonValue = btn.value;

    // etc
}

この場合、ボタンは実際にはIDをまったく必要としません。ただし、IDを保持する場合は、IDを一意にする方法を見つける必要があります(たとえば、それぞれの末尾にシーケンス番号を追加します)。

于 2012-10-30T03:36:50.400 に答える