Javascript 满足条件时下载CSV

Javascript 满足条件时下载CSV,javascript,jquery,csv,Javascript,Jquery,Csv,我有一个将JSON转换为CSV的代码。我把它通过一个特定的条件(如果条件),我希望CSV自动下载,如果条件是没有任何按钮点击满足。最短/最简单的方法是什么 例如: if( data.length == 10){ var stored_data = data; data = []; console.log(stored_data); var csv_file = ConvertToCSV(stored_data); //Conv

我有一个将JSON转换为CSV的代码。我把它通过一个特定的条件(如果条件),我希望CSV自动下载,如果条件是没有任何按钮点击满足。最短/最简单的方法是什么

例如:

if( data.length == 10){
        var stored_data = data;
        data = [];

        console.log(stored_data);
        var csv_file = ConvertToCSV(stored_data);   //ConvertTOCSV is a function

        }
如果满足上述条件,则应下载CSV。多谢各位

注:我知道这可以通过点击按钮轻松完成。但我希望在满足条件时自动下载

只需创建一个“虚拟”链接并以编程方式设置其href,然后单击。链接不应该出现在屏幕上,因为它没有内容

<body>
  <a href="#" id="csvDownload" download></a>
</body>
<script>
if( data.length == 10){
        var lnk = document.getElementById("csvDownload");
        var stored_data = data;
        data = [];

        console.log(stored_data);
        var csv_file = ConvertToCSV(stored_data);   //ConvertTOCSV is a function
        lnk.href = csv_file;
        lnk.click();
 }
</script>

如果(data.length==10){
var lnk=document.getElementById(“csvDownload”);
存储的var_数据=数据;
数据=[];
console.log(存储的_数据);
var csv_file=ConvertToCSV(存储的_数据);//ConvertToCSV是一个函数
lnk.href=csv_文件;
lnk.click();
}
只需创建一个“虚拟”链接并以编程方式设置其href,然后单击。链接不应该出现在屏幕上,因为它没有内容

<body>
  <a href="#" id="csvDownload" download></a>
</body>
<script>
if( data.length == 10){
        var lnk = document.getElementById("csvDownload");
        var stored_data = data;
        data = [];

        console.log(stored_data);
        var csv_file = ConvertToCSV(stored_data);   //ConvertTOCSV is a function
        lnk.href = csv_file;
        lnk.click();
 }
</script>

如果(data.length==10){
var lnk=document.getElementById(“csvDownload”);
存储的var_数据=数据;
数据=[];
console.log(存储的_数据);
var csv_file=ConvertToCSV(存储的_数据);//ConvertToCSV是一个函数
lnk.href=csv_文件;
lnk.click();
}

通过将文档位置更改为指向您创建的对象,您可以尝试这样做,但我在尝试为您创建一个快速示例时遇到的问题是,我似乎无法为文件提供可用的名称和扩展名。因此,所有下载的内容都是一个名为“下载”的文件,没有扩展名(不过,文件内容是正确的)

因此,如果您想寻找一种方法来为流指定名称和文件类型,您可以从以下内容开始-

document.location='data:Application/octet流,'+ 编码组件(csv_文件)


但是我想说@Scott的答案是一个更好的方法。

您可以通过将文档位置更改为指向您创建的对象来实现,但我在尝试为您创建一个快速示例时遇到的问题是,我似乎无法为文件提供可用的名称和扩展名。因此,所有下载的内容都是一个名为“下载”的文件,没有扩展名(不过,文件内容是正确的)

因此,如果您想寻找一种方法来为流指定名称和文件类型,您可以从以下内容开始-

document.location='data:Application/octet流,'+ 编码组件(csv_文件)


但是我想说@Scott的答案是一个更好的方法。

你为什么在那里使用| |条件?您可以使用“>=”大于或等于。。这可能就足够了。@ameenulla0007:我太傻了。@Popleak我很抱歉,但这怎么会是重复的呢?我清楚地知道如何通过点击按钮来做到这一点。我想知道一种不用点击按钮就可以完成的方法。虽然不完全相关,但您丢失了
数据的内容。设置
stored\u data=data
不会创建
data
的副本,它只是设置对同一对象的引用。然后,当您设置
data=[]
时,所有先前的内容都将从两个变量中消失。相关:如果您知道如何通过单击按钮来执行此操作,那么是什么阻止您在
If
块中使用相同的代码?但是当您想要执行if时?为什么要在那里使用| |条件?您可以使用“>=”大于或等于。。这可能就足够了。@ameenulla0007:我太傻了。@Popleak我很抱歉,但这怎么会是重复的呢?我清楚地知道如何通过点击按钮来做到这一点。我想知道一种不用点击按钮就可以完成的方法。虽然不完全相关,但您丢失了
数据的内容。设置
stored\u data=data
不会创建
data
的副本,它只是设置对同一对象的引用。然后,当您设置
data=[]
时,所有先前的内容都将从两个变量中消失。相关:如果您知道如何通过单击按钮来执行此操作,那么是什么阻止您在
If
块中使用相同的代码?但是,当您想要执行if时?