从html id javascript获取值

从html id javascript获取值,javascript,html,node.js,ejs,Javascript,Html,Node.js,Ejs,我有这个: <% if(data.length){ for(var i = 0;i < data.length;i++) { %> <tr> <td data-label="NAME" id="clientName" value="<%= data[i].NAME %>"><%= data[i].NAME %>

我有这个:

     <% if(data.length){ 
            for(var i = 0;i < data.length;i++) { %>
      <tr>
        <td data-label="NAME" id="clientName" value="<%= data[i].NAME %>"><%= data[i].NAME %> <%= data[i].LASTNAME %></td>
        <td data-label="EMAIL" id="email" value="<%= data[i].EMAIL %>"><%= data[i].EMAIL %></td>
        <td data-label="PHONE NUM"><%= data[i].PHONENUMBER %></td>
        <td data-label="LOCATION"><%= data[i].LOCATION %></td>
        <td data-label="COMPANY NAME"><%= data[i].COMPANYNAME %></td>
        <td data-label="CODE" id="code" value="<%= data[i].CODE %>"><%= data[i].CODE %></td>


        <td data-label="SEND PAYMENT"><button onclick="confirmPayment()">SEND PAYMENT</button></td>  
        <script>
          function confirmPayment() {
           var email =  document.getElementById("email").value
           var name = document.getElementById("clientName").value
           var code = document.getElementById("code").value
           console.log(name)
           console.log(email)
           console.log(code)
           
           if (confirm('Are you sure you want to send Payment?'))
              {
                fetch('/sendPaymentCode', {
                method: 'POST', 
                headers: {'Content-Type': 'application/json'},
              body: JSON.stringify({
                email,
                name,
                code
              })
            })
              }
              else
              {
                console.log('Payment canceled.');
              }

            
          }
       
        </script>
      </tr>
      <% }
    }else{ %>
    <% } %>
    </tbody>
  </table>

付款
函数confirmPayment(){
var email=document.getElementById(“email”).value
var name=document.getElementById(“clientName”).value
var代码=document.getElementById(“代码”).value
console.log(名称)
控制台日志(电子邮件)
console.log(代码)
如果(确认('您确定要发送付款吗?'))
{
获取(“/sendPaymentCode”{
方法:“POST”,
标题:{'Content-Type':'application/json'},
正文:JSON.stringify({
电子邮件
名称
密码
})
})
}
其他的
{
console.log(“付款已取消”);
}
}
当我点击SendPayment时,我基本上是在尝试获取用户电子邮件、代码和姓名的值。但是,它不工作,它在控制台中显示未定义。数据库中将有多个用户,因此当它在前端使用循环显示时,但当我尝试获取这些值时,它不会记录任何内容

这是正确的方法吗?

您需要使用这种方法

下面是一个关于
value
属性如何在HTML和JS之间工作的好答案


我要补充的是,正如评论中指出的那样,您还需要解决代码中的一些其他问题,但至于为什么
未定义
,这是因为
td
元素没有
属性。

将js代码放在页面底部。这不是一个正确的html结构您不能反复声明同一个函数(并期望您的按钮调用正确的函数)。您还多次将相同的
id
s放入表中,这也不应该以任何方式发生;您只需从按钮中唯一标识用户。一旦您发送了id或电子邮件,您就可以再次从数据库中获取所有其他相关数据。我会把
数据电子邮件=“
放在按钮中。在由循环外的单个脚本分配给所有按钮的单击处理程序中,您可以读取
this.dataset.email
,并将其发送到服务器。下面是一个非常基本的示例,演示如何避免大量重复和完全破坏的代码:@ChrisG感谢您的输入。我很感激你这样做。我一定会这样尝试,因为他们没有要求代码审查。他们问,当试图访问根本不存在的
td
标记的
属性时,为什么会得到
未定义的
。所以你们两人的这种极端傲慢的反应只是掩盖了核心问题。如果你有什么要补充的,你可以在不与别人说话的情况下发布答案,其实很简单。你没有看到我发布的评论吗?我试图通过指出他们方法的核心问题来帮助OP,并提出了他们价值方法的替代方案。您忽略了循环中的脚本和多个id问题,向OP暗示一切正常。任何发现这一点的未来用户都会认为这就是它的实现方式,无论是评论、回答还是投票,这都是我最关心的问题。谢谢你的回答,它确实抓住了价值,但不是针对用户的。我现在使用tag,直到我找到了一个更具体的解决方案
document.getElementById("email").getAttribute("value");