首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript值传递

JavaScript值传递
EN

Stack Overflow用户
提问于 2016-07-25 21:31:06
回答 3查看 62关注 0票数 1

使用SQLite,我可以列出下面的值

代码语言:javascript
复制
<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>

但是,当我单击该按钮时,它只显示弹出警告中的第一个值。

代码语言:javascript
复制
function myFunction() {
    var x = document.getElementById("myBtn").value;
    alert(x);
}

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

EN

回答 3

Stack Overflow用户

发布于 2016-07-25 21:33:33

所有的按钮都有相同的id属性。它们在页面中必须是唯一的。要解决此问题,可以删除id属性并将按钮的引用传递给函数:

代码语言:javascript
复制
<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>
代码语言:javascript
复制
function myFunction(el) {
    var x = el.value;
    console.log(x);
}

更好的做法是将相同的class放在所有按钮上,并使用不显眼的JS代码附加事件处理程序,如下所示:

代码语言:javascript
复制
<div class="text-middle">
    <?php foreach($result as $row) { ?> 
        <button class="button" value="<?php echo $row['Id']; ?>"><?php echo $row['Id']; ?></button>
    <?php } ?>
</div>
代码语言:javascript
复制
// native JS:
var buttons = document.getElementsByClassName("button");    
for (var i = 0; i < buttons.length; i++) {
    buttons[i].addEventListener('click', function() {
        var x = this.value;
        console.log(x);
    });
}

// jQuery:
$('.button').click(function() {
    var x = this.value;
    console.log(x);
});
票数 6
EN

Stack Overflow用户

发布于 2016-07-25 21:34:18

不要对多个元素使用相同的id : id="myBtn“

更改您的函数:

代码语言:javascript
复制
onclick="myFunction()"

至:

代码语言:javascript
复制
onclick="myFunction(this)"

因此:

代码语言:javascript
复制
function myFunction(element) {
      var x = element.value;
      alert(x);
}
票数 0
EN

Stack Overflow用户

发布于 2016-07-25 21:34:33

您需要通过它们的类来获取元素,而不是通过它们都共享的id (这不是一件好事情)。

代码语言:javascript
复制
<script>
function myFunction() {
  var x = document.getElementsByClassName("button1");
  for (var i = 0; i < x.length; ++i) {
    alert(x[i].value);
  }
}
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38569147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档