0

好吧,我两天前又来这里处理同样的问题,但它似乎仍然无法正常工作。所以任务是传递一个数组,它的字段是 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>

看来我还没有得到数据。有什么想法吗?

4

1 回答 1

1

您正在使用for( var i in files ). 这将遍历 中的所有值files,以及添加到 Object 原型中的任何内容。(这很糟糕)您需要过滤它的输出。

下一行包含var reader = new FileReader();. 您的 for 循环中似乎没有对此的任何引用,因此请将其删除。

下一行是$('#stelios').append('<option value=' + files[i] + '>');. 它创建一个特定的“选项”元素并将其附加到一个 id 为 stelios 的元素。这似乎是正确的。但是,此选项元素的值设置为files[i]不带引号......这很可能会导致混乱。您需要将其更改为:

for( var i in files ) {
  if( files.hasOwnProperty( i )) {
    //Removed unneeded FileReader
    $('#stelios').append('<option value="' + files[i] + '">');
  }
}

我假设您检查了files包含您希望它包含的数据。老实说,我不知道你想用 onchange 处理程序实现什么。

于 2013-08-04T09:21:33.797 回答