Javascript 如何从行/列循环中的表单元格提取超链接
我有一个JS函数,可以将页面上表格的内容写入CSV文件 但是,每当我遇到具有超链接(例如,Javascript 如何从行/列循环中的表单元格提取超链接,javascript,jquery,html-table,Javascript,Jquery,Html Table,我有一个JS函数,可以将页面上表格的内容写入CSV文件 但是,每当我遇到具有超链接(例如,)的表单元格时,我需要写入href值(在本例中)而不是html文本(在本例中为单元格值1) 下面的代码显示了一个在行和列之间循环的函数。我用这种方式创建CSV没有问题,但我正在努力实现值的“检查” <script> function downloadCSV() { var table = document.getElementById("table-example");
)的表单元格时,我需要写入href值(在本例中)而不是html文本(在本例中为单元格值1)
下面的代码显示了一个在行和列之间循环的函数。我用这种方式创建CSV没有问题,但我正在努力实现
值的“检查”
<script>
function downloadCSV() {
var table = document.getElementById("table-example");
// Array of rowData arrays
var results = [];
// holds data from each table row
var rowData;
//iterate through rows, skipping header
for (var i = 1, row; row = table.rows[i]; i++) {
rowData = [];
//iterate through columns
for (var j = 0, col; col = row.cells[j]; j++) {
// Checking for href and extracing link
let link = $(this).find('a').attr('href');
console.log(link);
if () {
....
}
else {
rowData.push(col.textContent);
}
}
results.push(rowData);
}
我和塔普拉就这件事争论不休。 贝娄,我想这就是你要找的
函数下载csv(){
var table=document.getElementById(“表示例”);
//行数据数组数组
var结果=[];
//保存来自每个表行的数据
var数据;
for(var i=1;row=table.rows[i];i++){
rowData=[];
//遍历列
for(var j=0,col;col=row.cells[j];j++){
变量单元格=$(行单元格[j]);
var hashref=cell.find('a');
//因为它得到了一个集合
如果(hashref.length>0&&hashref.length==1){
rowData.push(hashref.attr('href'));
}否则{
rowData.push(col.textContent);
}
}//单元格结束
结果:推送(rowData);
}//结束行
控制台日志(结果);
}
下载CSV
名称
位置
办公室
年龄
开始日期
薪水
系统架构师
爱丁堡
61
2011/04/25
$320,800
我的解决方案如下:
for (var j = 0, col; col = row.cells[j]; j++) {
// Checking for href and extracing link
var links = col.getElementsByTagName('a');
if (links.length > 0) {
var cellData = links[0].getAttribute('href');
} else {
var cellData = col.textContent;
}
rowData.push(cellData);
for
循环不调整该指向的内容。我假设您在某些情况下需要使用col
,而不是this
fashion@Taplar谢谢你-我编辑了这篇文章来展示我的解决方案,而没有使用$(this)
@Ahmed如果你能回答自己的问题,请随意将其作为答案而不是编辑(并将其标记为已接受)谢谢George!在塔普拉的评论之后,我提出了一个非常类似的解决方案。看起来唯一的区别是我在使用jQuery的地方使用了getElementsByTagName
,并且在我只检查length>0
@Ahmed的地方添加了一个检查length==1
,您可以使用jQuery而不是使用“getElementsByTagName”或“getElementById”,您可以使用$(“#表示例”)等等。我只是想你使用jquery作为href,这就是为什么我只在那里使用它。
for (var j = 0, col; col = row.cells[j]; j++) {
// Checking for href and extracing link
var links = col.getElementsByTagName('a');
if (links.length > 0) {
var cellData = links[0].getAttribute('href');
} else {
var cellData = col.textContent;
}
rowData.push(cellData);