【问题标题】:How to get button value using Javascript如何使用 Javascript 获取按钮值
【发布时间】:2012-10-19 09:28:13
【问题描述】:

我试图弄清楚如何使用 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 警报。

(仅供参考 - “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;
            }

        }

但是无论我点击的是哪个按钮,它都会返回第一个按钮的值。

我已经进行了一些谷歌搜索以及搜索此站点,但我找不到生成按钮的相同场景。

任何帮助或指针将不胜感激。谢谢你的时间:)

【问题讨论】:

  • @NullPointer 在 Stackoverflow 上在帖子底部签名是不是很糟糕?我还注意到,如果我以“你好”开始帖子,它也会被删除。感谢您的编辑:)
  • 是的,请不要使用...签名和你好,打招呼之类的
  • 好的,没问题。谢谢你告诉我。

标签: php javascript mysql button onclick


【解决方案1】:

请注意,对多个元素使用相同的 id 是无效的 html,尽管大多数(全部?)浏览器往往不会对此大惊小怪,它们仍然会非常愉快地显示页面。这就是为什么当您尝试使用 document.getElementById("details") 时,它总是给您第一个带有该 ID 的按钮 - 浏览器如何知道您指的是哪个?

话虽如此,如果您在点击时在函数调用中传递this

onClick=\"MCNdetails(this)\"

...这将使函数直接引用被单击的特定按钮。那么:

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

    // etc
}

在这种情况下,您的按钮根本不需要 id。但是,如果您确实保留了 id,您应该找到一种方法使它们独一无二(例如,在每个的末尾附加一个序列号)。

【讨论】:

  • 当我尝试按 id 位获取元素时,我有点知道会发生什么,但还是忍不住尝试了 :) 我尝试了您的代码,但没有工作,“btn”是否应该替换为按钮的名称?我都试过了,但都没有奏效。我毫不怀疑它没有起作用只是因为我的一些事情。无论如何,我很感激这些信息,我确实学到了一些新东西,而且总是很好。
  • 还想提一下,我按照您的建议删除了 id,我喜欢正确的代码。
  • 它应该像我展示的那样工作。不,btn 不应该替换为按钮的名称——它是函数中使用的函数参数的名称,就像我展示的那样。这与 NullPointer 的答案中的原理完全相同,除了该答案将this.value 作为参数传递,我的答案通过this 然后从btn.value 获取函数内的值。如果一个工作,另一个也应该。无论如何,如果您成功使用了另一个答案,可能没有必要再搞砸了。
  • 我知道好奇心害死猫,但我忍不住,我不得不尝试一下。你是对的,它有效......我不知道我第一次做错了什么,但它绝对有效。再次感谢:)
【解决方案2】:

试试类似的东西

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

   alert(value);
  }
 </script>
 <input type="button" value="Add" onclick="getVal(this.value)">

【讨论】:

  • 谢谢您,先生,我尝试了您的代码,它运行良好。我过去在我的第一个项目中使用过“this”,我希望我会考虑使用它,因为它显然是正确的方法。感谢您的宝贵时间和帮助。
  • @AndrewFox 非常欢迎您..所有使用在所以很乐意提供帮助
猜你喜欢
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多