如何创建显示HTML5 Javascript目录中所有文件的下拉菜单
我想创建一个下拉菜单并显示当前目录中的所有文件,这样当用户单击文件列表中的某个项目时,它会打印该文件的名称 以下是我到目前为止得出的结论: HTML如何创建显示HTML5 Javascript目录中所有文件的下拉菜单,javascript,css,html,Javascript,Css,Html,我想创建一个下拉菜单并显示当前目录中的所有文件,这样当用户单击文件列表中的某个项目时,它会打印该文件的名称 以下是我到目前为止得出的结论: HTML <form method="post"> <select name="DropdownList"> <option value="file1">fileArray[0]</option> <option value=
<form method="post">
<select name="DropdownList">
<option value="file1">fileArray[0]</option>
<option value="file2">fileArray[1]</option>
<option value="file3">fileArray[2]</option>
<option value="file4">fileArray[3]</option>
</select>
</form>
我想我只是不知道如何使它成为动态的,而不是硬编码列表中的名字。我有点不懂网络编程
编辑:
为了清楚起见,我只想用目录中的文件名填充一个下拉列表。因此,当用户点击该列表中的某个项目时,它将打印或记录(通过console.log()
)该文件的内容 您可以使用
元素和多个属性集,创建两个数组,其中包含文件对象和文件读取器的结果。readAsText()
和文件对象在更改事件中迭代文件列表对象
元素设置.name
位于
元素.textConten
,.value
到上传的文件的索引
附加到
元素,将
元素的值设置为选中的选项
,该选项对应于文件的索引
,作为数组中的文本
常量[输入、选择、文本区域、读卡器]=[
document.querySelector(“输入[类型=文件]”)
,document.querySelector(“选择”)
,document.querySelector(“textarea”)
,新文件阅读器
];
让[文件、数据、fn]=[
[],
[],(文件、读取器)=>新承诺((解决、拒绝)=>{
reader.onload=()=>{
reader.onload=reader.onerror=null;
解析(reader.result);
}
reader.onerror=拒绝;
reader.readAsText(文件);
})
];
input.onchange=async()=>{
select.innerHTML=“”;
files.length=data.length=0;
for(输入文件的常量文件){
常数{
名称
}=文件;
const option=新选项(名称,files.length);
文件。推送(文件);
选择.appendChild(选项);
让结果=等待fn(文件、读取器);
数据推送(结果);
}
}
select.onchange=()=>{
textarea.value=数据[select.value];
}
请参阅,文件阅读器
没有打开方法。您是否尝试过前面评论中链接问题的方法?FileReader
.readAsText()
异步返回load
或FileReader
事件的result
FileReaderSync
可从Worker
线程同步返回结果,不过您需要使用Worker.postMessage
将结果发送到主线程,并使用message
事件或使用MessageChannel
“我只想用目录中的文件名填充一个下拉列表”这不一定是一项需要准确完成的琐碎任务。是否要求也处理所选目录中的子目录?“并且没有子目录,它将是扁平的”,这减少了递归迭代目录和尝试确定文件实际位于哪个目录的元素。链接问题的答案应提供当前查询的解决方案;您在链接问题的答案中尝试过HTML和JavaScript吗?@bartheloafan注意,我们不需要存储文件
对象,非常感谢您的帮助。我试试这个
document.getElementByName('DropdownList').addEventListener('click', function() {
window.update.forEach(function(d, 'data/baselinedata') {
var f = readStringFromFileAtPath(d);
console.log(f)
});
});
function readStringFromFileAtPath (pathOfFileToReadFrom) {
var request = new XMLHttpRequest();
request.open("GET", pathOfFileToReadFrom, false);
request.send(null);
var returnValue = request.responseText;
return returnValue;
}