使用JavaScript从html复选框接收信息

时间:2018-03-19 16:52:24

标签: javascript html css node.js electron

因此,脚本从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'}

中的预期数组

1 个答案:

答案 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类型的变量一起使用,因为它不是一个数组,而是一个类似数组的对象。