JavaScript值传递

时间:2016-07-25 13:31:06

标签: javascript php jquery

使用SQLite我可以列出

中的值
<div class="text-middle">
    <?php foreach($result as $row) ?> 
        <button class="button button1" id="myBtn" value="<?php echo $row['Id']; ?>" onclick="myFunction()"><?php echo $row['Id']; ?></button>
    <?php } ?>
</div>

然而,当我点击按钮时,它只显示弹出警报中的第一个值。

function myFunction() {
    var x = document.getElementById("myBtn").value;
    alert(x);
}

如何在每个按钮中获取相应的值?

3 个答案:

答案 0 :(得分:6)

您的所有按钮都具有相同的INSERT INTO RECORDS_HISTORY (RECORDS_ID, LOG_DATE, LOG_TYPE, MESSAGE) VALUES (<records.id>, sysdate(), 'CREATED', 'Record created') 属性。它们在页面中必须是唯一的。要解决此问题,您可以删除_HISTORY属性并将按钮的引用传递给函数:

id
id

更好的做法是在所有按钮上放置相同的<div class="text-middle"> <?php foreach($result as $row) { ?> <button class="button button1" value="<?php echo $row['Id']; ?>" onclick="myFunction(this)"><?php echo $row['Id']; ?></button> <?php } ?> </div> 并使用不显眼的JS代码来附加事件处理程序,如下所示:

function myFunction(el) {
    var x = el.value;
    console.log(x);
}
class

答案 1 :(得分:0)

不要对一个元素使用相同的id:id =&#34; myBtn&#34;

更改您的功能:

onclick="myFunction()"

为:

onclick="myFunction(this)"

所以:

function myFunction(element) {
      var x = element.value;
      alert(x);
}

答案 2 :(得分:0)

你需要按类来获取元素,而不是它们共享的id(这是一件坏事)。

<script>
function myFunction() {
  var x = document.getElementsByClassName("button1");
  for (var i = 0; i < x.length; ++i) {
    alert(x[i].value);
  }
}
</script>