在javascript中显示动态按钮的值

在javascript中显示动态按钮的值,javascript,html,Javascript,Html,我试图从循环中生成一系列按钮。每次单击按钮时,都应显示每个按钮的file.path。id是从循环本身动态分配的。它仅显示第一个。代码如下: 单击按钮后,将显示文档1的路径。但是当点击第二个按钮时,它也会显示doc1的路径。应显示单据2的路径 var result={“data”:“{“files\”:[{“name\”:“doc1.pdf\”,“title\”:“networking\”,“path\”:“mfpreader.comze.com\\\\/files\\\\/doc1.pdf\”,

我试图从循环中生成一系列按钮。每次单击按钮时,都应显示每个按钮的file.path。id是从循环本身动态分配的。它仅显示第一个。代码如下:

单击按钮后,将显示文档1的路径。但是当点击第二个按钮时,它也会显示doc1的路径。应显示单据2的路径

var result={“data”:“{“files\”:[{“name\”:“doc1.pdf\”,“title\”:“networking\”,“path\”:“mfpreader.comze.com\\\\/files\\\\/doc1.pdf\”,{“name\”:“doc2.pdf\”,“title\:“Armoogum\”,“path\”:“mfpreader.comze.com\\\/files\\\/doc2.pdf\”,“isSuccessful\”,“true\”;
var-str='';
var files=JSON.parse(result.data).files;
对于(var file,i=0;i'+file.title+'
'++''+''Add'+'
'; } 警报(str); $(“#视图列表”).html(str); 函数add(){ var b=document.getElementById('b')。值; 警报(b); }

如果我能得到一些帮助,我将非常感激。多谢各位

哪里定义了
str
?我怀疑它可能在
for
循环中,但您要确保在循环之前定义它:

var str = '';
for(var file, i = 0; i < files.length; i++) {
    file = files[i];
    str += file.name + '<br />' + file.title + '<br/>' + '<input type="hidden" id="b" value="'+ file.path +'" />' + '<button onclick="add()">Add</button> '+  '<br/>' ;
}
var-str='';
对于(var file,i=0;i'+file.title+'
'++''+''Add'+'
'; }

我想输出就是你想要的。

你所有的按钮都有相同的id,这是行不通的。有几种方法可以做到这一点。我稍微修改了HTML以对每个部分进行分组,这样您就可以轻松找到按钮的相关隐藏字段。我还将对正在单击的按钮的引用传递给add函数:

var result = {"data":"{\"files\":[{\"name\":\"doc1.pdf\",\"title\":\"networking\",\"path\":\"mfpreader.comze.com\\\/files\\\/doc1.pdf\"},{\"name\":\"doc2.pdf\",\"title\":\"Armoogum\",\"path\":\"mfpreader.comze.com\\\/files\\\/doc2.pdf\"}]}","isSuccessful":true};
var str= '';
var files = JSON.parse(result.data).files;

for (var i = 0; i < files.length; i++) {
  var file = files[i];
  str += file.name + '<br /><div class="fileSection">' + file.title + '<br/>' + '<input class="fileName" type="hidden" id="b" value="'+ file.path +'" />' + '<button onclick="add(this)">Add</button> '+  '</div><br/>' ;

  $("#viewlist").html(str);  

function add(btn) { 
  var b = $(btn).closest('.fileSection').find('.fileName').val();
  alert(b)
}    
var result={“data”:“{“files\”:[{“name\”:“doc1.pdf\”,“title\”:“networking\”,“path\”:“mfpreader.comze.com\\\\/files\\\\/doc1.pdf\”,{“name\”:“doc2.pdf\”,“title\:“Armoogum\”,“path\”:“mfpreader.comze.com\\\/files\\\/doc2.pdf\”,“isSuccessful\”,“true\”;
var-str='';
var files=JSON.parse(result.data).files;
对于(var i=0;i'+file.title+'
'++''+''Add'+'
'; $(“#视图列表”).html(str); 函数添加(btn){ var b=$(btn).closest('.fileSection').find('.fileName').val(); 警报(b) }
很抱歉,我在复制时错过了它。单击按钮时,它会显示文档1的路径。但是,单击第二个按钮时,它也会显示文档1的路径。它应该会显示文档2的路径。
var result = {"data":"{\"files\":[{\"name\":\"doc1.pdf\",\"title\":\"networking\",\"path\":\"mfpreader.comze.com\\\/files\\\/doc1.pdf\"},{\"name\":\"doc2.pdf\",\"title\":\"Armoogum\",\"path\":\"mfpreader.comze.com\\\/files\\\/doc2.pdf\"}]}","isSuccessful":true};
var str= '';
var files = JSON.parse(result.data).files;

for (var i = 0; i < files.length; i++) {
  var file = files[i];
  str += file.name + '<br /><div class="fileSection">' + file.title + '<br/>' + '<input class="fileName" type="hidden" id="b" value="'+ file.path +'" />' + '<button onclick="add(this)">Add</button> '+  '</div><br/>' ;

  $("#viewlist").html(str);  

function add(btn) { 
  var b = $(btn).closest('.fileSection').find('.fileName').val();
  alert(b)
}