Django模态框无法正确获取DataFrame对应索引值问题求助
问题根源分析
你遇到的问题核心很明确:所有模态框都使用了同一个id="myModal"。HTML中id是唯一标识,浏览器在查找data-target="#myModal"时,只会找到页面中第一个匹配该id的元素,所以不管你点击哪一行的按钮,打开的都是第一行对应的模态框,自然显示的是第一行的内容。
虽然控制台打印的destinations[int(temp)]是正确的(因为循环时temp会遍历每一行的索引),但模态框的id重复导致了显示错位。
解决方案:给每个模态框生成唯一ID
我们只需要给每一行的模态框分配一个唯一的id(比如结合当前行的索引temp),同时让对应按钮的data-target指向这个唯一id即可。修改你的循环代码如下:
for i in soup.find("tbody").find_all('tr'): temp = i.find('th').text # 为当前行的模态框生成唯一ID unique_modal_id = f"myModal-{temp}" # 构建带唯一ID的模态框HTML,直接填充对应内容 modal_content = f''' <td> <button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#{unique_modal_id}">Open Modal</button> <div class="modal fade" id="{unique_modal_id}" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">Modal Header</h4> </div> <div class="modal-body"> <p>{destinations[int(temp)]}</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> </div> </div> </div> </div> </td> ''' # 将构建好的HTML添加到当前行 i.append(BeautifulSoup(modal_content, 'html.parser')) print(destinations[int(temp)])
关键修改点说明
- 唯一ID生成:用
temp(当前行的索引)拼接成myModal-{temp},确保每个模态框的id独一无二。 - 按钮与模态框关联:按钮的
data-target指向对应的唯一id,点击时会精准定位到当前行的模态框。 - 直接填充内容:在构建模态框HTML时就把
destinations[int(temp)]的值放到<p>标签里,避免了你之前错误的DOM操作尝试(i.find('th')[7].find('p')str(...)这段代码语法是错误的,不需要保留)。
这样修改后,点击每一行的按钮都会打开对应索引的模态框,显示正确的内容了。
内容的提问来源于stack exchange,提问作者Tayyab Vohra
相关产品推荐
相关产品推荐

