javascript - 如何在纯 javascript 或 typescript 中访问表的最后一列
问题描述
试图在纯 javascript 中访问每一行的最后一列,而不是在 jquery 中但不工作。任何知道的人请帮助找到解决方案。
app.component.html:
<div id="contentId">
<table>
<thead>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</thead>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td><select><option>Select</option><option value="test1">Test 1</option><option value="test2">Test 2</option></select></td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td><select><option>Select</option><option value="test1">Test 1</option><option value="test2">Test 2</option></select></td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td><select><option>Select</option><option value="test1">Test 1</option><option value="test2">Test 2</option></select></td>
</tr>
</table>
</div>
演示:https ://stackblitz.com/edit/amexio-breadcrumb-demo-jyxytf?file=src/app/app.component.ts
解决方案
我不确定为什么在使用 Angular 时你想要以纯 javascript 方式使用它,
无论如何,我可以使用dom querySelector() 方法以纯 javascript 方式为您提供解决方案..
ngOnInit(){
const gettable = document.getElementById("contentId").querySelector('table');
const rows = gettable.getElementsByTagName('tr');
for (let i=0; i<rows.length; i++)
{
const columns = rows[i].getElementsByTagName("td");
const lastColumn = columns[columns.length - 1];
const select = lastColumn.querySelector('select');
select.addEventListener('change', this.getEvent.bind(this, select))
}
}
getEvent(selectedItem){
console.log(selectedItem.value);
return event;
}
我已经制定了一个解决方案,可以在选择的每一行的最后检索每个选择框值。
更新:
如果您使用的是primeng表并且需要从表中检索值(p-table
),您可以使用角度elementRef并使用以下方法获取值,
const table = this.elementRef.nativeElement.querySelectorAll('p-table table');
并且该表将在ngAfterviewInit生命周期钩子中完全初始化,因此从ngOnInit()
钩子更改。
还添加ChangeDetectionStrategy
以检测选择框值的更改..
使用primeng更新了stackblitz:https ://stackblitz.com/edit/primeng-tables-ubgkcm
推荐阅读
- excel - 动态列表、excel公式
- ios - 附加图像后可选的 UIImage 数组为零
- asp.net-mvc - 如何解决 MVC 中的“站点所有者错误:站点密钥无效”?
- python - urllib2 允许使用代理在 url 上重定向
- android - Proguard - 找不到 [com/google/android/gms/d/kl] 的通用超类
- c# - 需要 foreach 到 linq 表达式帮助
- unity3d - Unity 2D - 可破坏地形或忽略 Spritemask 上的 Poly Collider
- salesforce - Salesforce 顶点:inputField
- vba - 在 VBA 中处理过滤集
- python - Python 类型转换