[英]How to save input/select values from a website to an XML/JSON file and loading automatically filling them out again using JavaScript
我有一个问题,关于将输入/选择值从网站保存到XML / JSON文件并再次自动加载时进行加载。
到目前为止,我已经设法写了这个: https : //jsfiddle.net/Lwvum3qe/17/
有很多代码,jsfiddle上的片段可以让您大致了解代码的功能。 最重要的位是:
function downloadData(contentType,data,filename){
var link=document.createElement("A");
link.setAttribute("href",encodeURI("data:"+contentType+","+data));
link.setAttribute("style","display:none");
link.setAttribute("download",filename);
document.body.appendChild(link); //needed for firefox
console.log(link.outerHTML);
link.click();
setTimeout(function(){
document.body.removeChild(link);
},1000);
}
function fromToXml(form){
var xmldata=['<?xml version="1.0"?>'];
xmldata.push("<form>");
var inputs=form.elements;
for(var i=0;i<inputs.length;i++){
var el=document.createElement("ELEMENT");
if (inputs[i].name){
el.setAttribute("name",inputs[i].name);
el.setAttribute("value",inputs[i].value);
xmldata.push(el.outerHTML);
}
}
xmldata.push("</form>");
return xmldata.join("\n");
}
function download(frm){
var data=fromToXml(frm);
console.log(data);
downloadData("text/xml",data,"export.xml");
}
我使用许多表格,因此一次只能保存一次。 我尝试用div替换主要形式(“容器”),但它根本没有帮助。 该功能读取所有复选框数据,无论是否已选中它们。 是否只能从已检查的数据中读取数据? 在这种情况下,根本不会保存选择。
总体思路是,我需要能够从文件中读取数据,并根据该数据填写所有输入/复选框/选择字段。 我知道有很多打开文件和解析文件的方法,但我更喜欢使用您可以提供的最简单的方法。 我是JS的初学者,无论哪种语言,我从来都不擅长解析文件。 😞
衷心感谢您愿意提供的任何帮助和提示。
在fromToXml
函数中,您正在检查inputs[i].name
。 您应该检查inputs[i].checked
。
我也有一些技巧,我认为您可以使用这些技巧来改进您的代码:
[]
。 例如,应将<input name="choice">
重命名为<input name="choice[]" />
。 :checked
获取选中的复选框。 forEach
, map
和filter
。 jQuery也有自己的数组方法,例如.map
和.each
通过使用这些技巧,这是一个更漂亮的getData
函数(从fromToXML
重命名)。
function getData(form){
return $(form).find(":checked").map(function(){
return {
name: this.name,
value: this.value
};
}).toArray();
}
然后,您可以使用以下命令在文档中的任何位置调用此函数:
var data = getData(myForm);
var dataAsString = JSON.stringify(data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.