嗯,我在2天前再次来到这里同样的问题,但似乎它仍然无法正常工作。所以任务是传递一个数组,它的字段是CSV数据。我得到了这样的建议:
<datalist id="stelios">
</datalist>
<script type="text/javascript" src="jquery.js"></script>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object`
// Loop through the FileList
for (var i in files) {
var reader = new FileReader();
$('#stelios').append('<option value=' + files[i] + '>');
}
}
document.getElementById('stelios').addEventListener('change', handleFileSelect, false);
</script>
但似乎我还没有获得数据。任何想法?
答案 0 :(得分:1)
您正在使用for( var i in files )
。这将循环遍历files
中的所有值,以及已添加到Object原型中的所有值。 (This is bad)您需要过滤此输出。
下一行包含var reader = new FileReader();
。在你的for循环中似乎没有任何对此的引用,所以删除它。
下一行是$('#stelios').append('<option value=' + files[i] + '>');
。它创建一个'option'元素,并将其附加到id为stelios的元素。这似乎是正确的。但是,此选项元素的值设置为files[i]
没有引号...这很可能会导致混乱。您需要将其更改为:
for( var i in files ) {
if( files.hasOwnProperty( i )) {
//Removed unneeded FileReader
$('#stelios').append('<option value="' + files[i] + '">');
}
}
我假设你检查过files
包含你希望它包含的数据。老实说,我不知道你想用onchange处理程序实现什么。