Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从行/列循环中的表单元格提取超链接_Javascript_Jquery_Html Table - Fatal编程技术网

Javascript 如何从行/列循环中的表单元格提取超链接

Javascript 如何从行/列循环中的表单元格提取超链接,javascript,jquery,html-table,Javascript,Jquery,Html Table,我有一个JS函数,可以将页面上表格的内容写入CSV文件 但是,每当我遇到具有超链接(例如,)的表单元格时,我需要写入href值(在本例中)而不是html文本(在本例中为单元格值1) 下面的代码显示了一个在行和列之间循环的函数。我用这种方式创建CSV没有问题,但我正在努力实现值的“检查” <script> function downloadCSV() { var table = document.getElementById("table-example");

我有一个JS函数,可以将页面上表格的内容写入CSV文件

但是,每当我遇到具有超链接(例如,
)的表单元格时,我需要写入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);