Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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 需要导出a中的表(<;部门>;作为excel,保留填写的输入和选项数据_Javascript_Html_Excel_Export_Element - Fatal编程技术网

Javascript 需要导出a中的表(<;部门>;作为excel,保留填写的输入和选项数据

Javascript 需要导出a中的表(<;部门>;作为excel,保留填写的输入和选项数据,javascript,html,excel,export,element,Javascript,Html,Excel,Export,Element,我有一个页面,它用javascript进行了一些选择,并根据输入提出了建议。我的一些客户希望能够以excel格式保存这些数据,但我在改进这一点时遇到了问题 下面是我找到的将DIV中的HTML导出为XLS的代码: $('btnExport').addEvent('click', function(e){ //getting values of current time for generating the file name var dt = new Date();

我有一个页面,它用javascript进行了一些选择,并根据输入提出了建议。我的一些客户希望能够以excel格式保存这些数据,但我在改进这一点时遇到了问题

下面是我找到的将DIV中的HTML导出为XLS的代码:

$('btnExport').addEvent('click', function(e){
        //getting values of current time for generating the file name
        var dt = new Date();
        var day = dt.getDate();
        var month = dt.getMonth() + 1;
        var year = dt.getFullYear();
        var hour = dt.getHours();
        var mins = dt.getMinutes();
        var postfix = day + "." + month + "." + year + "_" + hour + "." + mins;
        //creating a temporary HTML link element (they support setting file names)
        var a = document.createElement('a');
        //getting data from our div that contains the HTML table
        var data_type = 'data:application/vnd.ms-excel';
        var table_div = document.getElementById('dvData');
        var table_html = table_div.outerHTML.replace(/ /g, '%20');
        a.href = data_type + ', ' + table_html;
        //setting the file name
        a.download = 'exported_table_' + postfix + '.xls';
        //triggering the function
        a.click();
        //just in case, prevent default behaviour
        e.preventDefault();
    });
这几乎满足了我的需要,但我希望能够在最终输出中保留初始选择(下拉列表和字段)作为它们的值。我找到了一些相关的代码,用它们的值替换这些标记,但这会影响页面本身,而不是输出

var inputs = document.querySelectorAll('select');
for (var i = 0; i < inputs.length; i++) {
    var text = document.createTextNode(inputs[i].value);
    inputs[i].parentNode.replaceChild(text, inputs[i]);
}
var inputs=document.querySelectorAll('select');
对于(变量i=0;i

如何将这两个函数组合成有意义的东西?我需要导出的数据被拆分到多个表中。我发现了一些利用jquery的解决方案,但我在网站上使用了mootools,将两者结合起来似乎是一个突破。

我将给你一个关于懒惰解决方案的提示。在页面上,使用
cloneNode
克隆该div并将其作为变量保留。当需要导出时,只需导出该引用(而不是实际的div)


另一方面,如果需要保留用户输入的一些其他信息,请仍然克隆节点,并在克隆实例中运行所有字段和下拉列表,并将它们设置回默认值。如果需要引用每个下拉列表的每个默认值,可以使用某种
data-*
属性。然后再次导出克隆节点。

这样做的方式是,用户填写页面上的字段(字段本身是动态的,用户可以添加更多),页面根据数据给出建议(随着内容的更新而自动)。我希望有一个按钮,可以按当前状态导出所有内容(即保留用户输入的数据)。当按下按钮并使用克隆时,是否可以让克隆节点在div上工作?它能保持用户数据的完整性吗?我几乎能让它工作了。我只是有一个问题-代码是拉在下拉列表中的第一个选项,而不是当前选择的一个<代码>变量输入=dupDiv.querySelectorAll('select');对于(var i=0;i解决了它。我使用了Mootools克隆方法,它可以记住当前的选项选择。