通过纯 JS 从 tablerow//<tr onClick(myFunction> 获取 element.innerHTML

Posted

技术标签:

【中文标题】通过纯 JS 从 tablerow//<tr onClick(myFunction> 获取 element.innerHTML【英文标题】:get element.innerHTML via pure JS from tablerow//<tr onClick(myFunction> 【发布时间】:2021-12-05 10:13:04 【问题描述】:

我正在尝试启用一个弹出窗口,其中包含有关单击的表格元素的信息。 因此,我想获取单击元素的元素 ID。谢谢:D

问题

无论我点击哪个表格条目,我总是得到相同的 ID//表格元素。

带有显示数据库数据的表格的 HTML 页面


%extends 'main/base.html'%
%block main%
<div class="container-xxl d-flex justify-content-center">
   <div class="container-fluid" style='background-color:aquamarine;'></div>
   <div class="container-fluid" style='background-color:rgba(190, 90, 230, 0.308); height:10em;'></div>
   <div class="container-fluid" style='background-color:aquamarine;'></div>
</div>
<div class="container-xxl d-flex justify-content-center">
   <form action='' method="POST">
      %csrf_token%
      <input type='text' name='isbn' placeholder="ISBN-13 Number...">
      <button type='submit'>Add</button>
   </form>
</div>
<div class="container-xxl d-flex justify-content-center" id='table'>
   <table class='table table-hover'>
      <thead>
         <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Author</th>
            <th>Kategorie</th>
            <th>Seitenzahl</th>
         </tr>
      </thead>
      <tbody>
         %for book in book_table%
         <!--tr onClick()-->
            <tr onClick='get_element_ID()'>
               <td id='ID'>book.id</td>
               <td>book.title</td>
               <td>book.author</td>
               <td>book.kategorie</td>
               <td>book.seitenzahl</td>
            </tr>
         %endfor%
      </tbody>
      <tfoot>
         <tr>
            <td>
               <p>footer</p>
            </td>
         </tr>
      </tfoot>
   </table>
</div>
<script>
   function get_element_ID()
      var id = (this).document.getElementById('ID');
      console.log(id);
      
   
</script>
%endblock main%


带有表格的 HTML 页面图片

控制台日志输出图片

【问题讨论】:

把这个代码&lt;td id='ID'&gt;book.id&lt;/td&gt;改成这个&lt;td id='book.id'&gt;book.id&lt;/td&gt; 我按照你的建议更改了它,但现在我在控制台日志中总是得到 null 【参考方案1】:

在 HTML DOM 中,您不能拥有超过 1 个具有相同 id 的项目,对于您的所有 td 标签,id 都是 ID,因此如果您更改 &lt;td id="ID"&gt; with &lt;td id=book.id&gt; ,每个 td 必须具有正确的 id。

您总是得到 ID 1,因为当您执行 getElementByID("ID") 时,DOM 返回它找到的第一个具有该 ID 的元素,因为应该没有更多了。

【讨论】:

哦,是的,谢谢你的提示!我已经这样做了,但我知道得到值 null【参考方案2】:

如上所述,问题在于getElementById('ID') 中请求的 ID 始终相同。

这个知识就像它应该的那样工作:


%extends 'main/base.html'%
%block main%
<div class="container-xxl d-flex justify-content-center">
   <div class="container-fluid" style='background-color:aquamarine;'></div>
   <div class="container-fluid" style='background-color:rgba(190, 90, 230, 0.308); height:10em;'></div>
   <div class="container-fluid" style='background-color:aquamarine;'></div>
</div>
<div class="container-xxl d-flex justify-content-center">
   <form action='' method="POST">
      %csrf_token%
      <input type='text' name='isbn' placeholder="ISBN-13 Number...">
      <button type='submit'>Add</button>
   </form>
</div>
<div class="container-xxl d-flex justify-content-center" id='table'>
   <table class='table table-hover'>
      <thead>
         <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Author</th>
            <th>Kategorie</th>
            <th>Seitenzahl</th>
         </tr>
      </thead>
      <tbody>
         %for book in book_table%
         <!--tr onClick()-->
            <tr onClick='get_element_ID("book.id")'>
               <td id="book.id">book.id</td>
               <td>book.title</td>
               <td>book.author</td>
               <td>book.kategorie</td>
               <td>book.seitenzahl</td>
            </tr>
         %endfor%
      </tbody>
      <tfoot>
         <tr>
            <td>
               <p>footer</p>
            </td>
         </tr>
      </tfoot>
   </table>
</div>
<script>
   function get_element_ID(id)
      var book_id = document.getElementById(id);
      console.log(book_id);
   
</script>
%endblock main%


输出控制台

【讨论】:

以上是关于通过纯 JS 从 tablerow//<tr onClick(myFunction> 获取 element.innerHTML的主要内容,如果未能解决你的问题,请参考以下文章

表格标签

如何使 HTML tr(表格行)中的文本居中?

表格边框不起作用:表格行(tr)边框没有出现使用css [重复]

用于打印的表格行 (<tr>) 分页的防弹解决方案

JSP实现在项目在网页上查询

纯js实现分页