因此,脚本从node.js函数接收一个文件名数组,并创建一个清单。哪个工作正常。但它应该使用选定的文件名创建一个新数组,并将其解析回一个新函数。 但是被填充的数组是来自函数的输入而不是实际的文件名。
使用的语言和包:Html,css,Javascript,node.js和electronjs
脚本的外观如下:
<script>
const scan = require('../src/scan.js');
const merge = require('../src/merge.js');
scan.filesscan('tests', files => {
files.forEach(file => {
document.getElementById('list').innerHTML +=
'<input type="checkbox" name="mycheckboxes">' + file + '<br>';
});
});
function next(){
var checkedBoxes = document.querySelectorAll('input[name=mycheckboxes]:checked');
alert(checkedBoxes);
merge.fileMerge(checkedBoxes);
location.href = 'test.html';
}
</script>
来自scan.js的输入{'a.txt','b.txt','c.txt'}
所选项目{'a.txt','c.txt'}
中的预期数组答案 0 :(得分:1)
嗯,JavaScript正在为您提供您所要求的内容:
var checkedBoxes = document.querySelectorAll('input[...');
querySelectorAll
返回NodeList
HTMLInputElement
(在这种情况下)。
如果您想要实际的文件名,最简单的方法是使用文件名设置每个checkbox
的{{1}}属性:
value
然后你可以得到文件名(在files.forEach(file => {
document.getElementById('list').innerHTML +=
'<input type="checkbox" name="mycheckboxes" value="' + file + '">' +
file + '<br>';
});
函数中):
next
不,你不能将var checkedBoxes = document.querySelectorAll('input[name=mycheckboxes]:checked');
var files = [];
for (var i = 0; i < checkedBoxes.length; i++) {
files.push(checkedBoxes[i].value);
}
与forEach
类型的变量一起使用,因为它不是一个数组,而是一个类似数组的对象。