点击<option>时获取表格同行<td>中Hostname值的技术实现问题
解决方案
你可以通过DOM遍历找到当前<select>所在的表格行,再从中提取对应的Hostname,具体修改如下:
修改后的JavaScript代码
$(function (e) { $(".form-select").change(function (event) { // 获取选中的option值 const vulnValue = this.value; // 找到当前select所在的表格行 const $row = $(this).closest('tr'); // 从行中提取Hostname(对应Rechnernummer类的td里的a标签文本) const hostname = $row.find('.Rechnernummer a').text().trim(); // 这里就可以拿着vulnValue和hostname发请求给Django后端了 console.log('选中的漏洞ID:', vulnValue); console.log('对应主机名:', hostname); // 保留你原来的取消选中逻辑 for(var i = 0; i < this.options.length; i++){ this.options[i].selected = false; } }); });
关键逻辑说明
$(this).closest('tr'):从当前触发事件的<select>元素出发,向上查找最近的<tr>(也就是它所在的表格行),这是定位目标行最可靠的方式,只要行结构不变,不管DOM层级怎么调整都能生效。$row.find('.Rechnernummer a').text().trim():在找到的行里,定位到class为Rechnernummer的单元格,再获取里面<a>标签的文本内容,trim()用来去除可能存在的多余空格。
拿到vulnValue和hostname之后,你可以用$.ajax()或者fetch()向Django后端发送请求,示例如下:
// 示例:用jQuery发送POST请求(需确保页面已包含Django的CSRF令牌) $.ajax({ url: '/your-django-api-path/', // 替换为你的后端接口地址 method: 'POST', data: { 'vulnerability_id': vulnValue, 'hostname': hostname, 'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val() }, success: function(response) { console.log('请求成功:', response); }, error: function(xhr) { console.error('请求失败:', xhr); } });
内容的提问来源于stack exchange,提问作者jonat-han
相关产品推荐
相关产品推荐

