javascript - 在javascript中使用相同的id获取不同的值

标签 javascript

HTML

<c:forEach var="legList" items="${legList}">/* iterating over ledger name and 
                                                  ledger id */                  
   <tr>
        <td>
        <input type="hidden" class="legid" name="legid" id=legid
        value=${legList.ledgerId}>
        <a onclick=display(document.getElementById('legid').value)
        href='#myModal' role="button" data-toggle="modal">${legList.ledgerName}</a>
        </td>
    </tr>

Javascript

var display = function(id){
alert(id);  //want to get id of clicked ledger name
}

但这里的问题是我在单击所有链接时得到相同的 id,我知道为什么会发生这种情况,因为我们无法获取具有相同 id 的值。所以我的问题是当 id 在 for 循环内更改时如何获得不同的 Id。希望我清楚我的问题。

最佳答案

id必须在文档中是唯一的。如果您通过使用具有相同 id 的多个元素来打破该规则,则结果将是正式未定义的(尽管实际上,当您使用 getElementById 时,浏览器会为您提供第一个结果)。

相反,请使用您的 a 元素实例在 onclick 中可用作 this 的事实,并使用它来查找 input 旁边的 DOM(在本例中可能使用 previousElementSibling):

<a onclick="display(this.previousElementSibling.value)" ...

示例:

function display(value) {
  alert("value is: " + value);
}
<table>
  <tbody>
    <tr>
      <td>
      <input type="hidden" class="legid" name="legid" value="value1">
      <a onclick=display(this.previousElementSibling.value)
      href='#myModal' role="button" data-toggle="modal">Value 1</a>
      </td>
    </tr>
    <tr>
      <td>
      <input type="hidden" class="legid" name="legid" value="value2">
      <a onclick=display(this.previousElementSibling.value)
      href='#myModal' role="button" data-toggle="modal">Value 2</a>
      </td>
    </tr>
    <tr>
      <td>
      <input type="hidden" class="legid" name="legid" value="value3">
      <a onclick=display(this.previousElementSibling.value)
      href='#myModal' role="button" data-toggle="modal">Value 3</a>
      </td>
    </tr>
  </tbody>
</table>

<小时/>

一般来说,我建议不要使用 onclick,而是使用现代事件处理或许多流行的 MVC 样式框架之一。

关于javascript - 在javascript中使用相同的id获取不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53757835/

相关文章:

javascript - 传递组件 props 并在 Switch case 内使用

Javascript、事件、事件监听器和内存泄漏

javascript - 在具有 1 个 mongoose 查询的函数中使用 async wait 是否合适?

javascript - 使用 Javascript 强制文本框中事件 Onkeypressed 的数字精度

javascript - 使用VC++ COM从WebBrowser2获取IFrame的名称

javascript - 如何在鼠标悬停时展开/折叠 Shiny 的仪表板侧边栏?

javascript - Puppeteer 无法上传文件,出现 TypeError : Failed to fetch

javascript - 需要使用 Stripe(more) 重力表单插件将付款表单默认为 "card on file"

javascript - 具有动态页面数的 C# ASP.NET 服务器端轮播 slider

javascript - Foundation Essential 包中缺少 CSS