Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript警报未提供正确的fileID值_Javascript - Fatal编程技术网

JavaScript警报未提供正确的fileID值

JavaScript警报未提供正确的fileID值,javascript,Javascript,我有一个JSP页面,其中列出了如下文件: 每个文件都有自己唯一的文件id,我尝试实现for循环以获取选中复选框的文件的文件id 我的JS: function fireGENURL(a){ try{ var selectedFiles = $('.fileCheck:checked'); // var fileID =$(selectedFiles[0]).attr('fileid'); var count = 0; fo

我有一个JSP页面,其中列出了如下文件:

每个文件都有自己唯一的文件id,我尝试实现for循环以获取选中复选框的文件的文件id

我的JS:

function fireGENURL(a){
    try{

        var selectedFiles = $('.fileCheck:checked');


      // var fileID =$(selectedFiles[0]).attr('fileid');
        var count = 0;

        for(var file in selectedItems){

             file=$(selectedFiles).attr('fileid');

            count += 1;
            alert(file+"has been selected");

        }
当我在一个框上打勾时,它会正确返回警报值,但当我在两个框上打勾时,它会返回警报两次,但会返回第一个复选框的fileID。它返回两次相同的ID,但我的预期结果是它返回各自的ID

我在这里犯了什么错误吗

编辑 使用each遍历.fileCheck:checked集合,然后可以在回调中使用$this引用包含该元素的jQuery对象。在这一点上,您可以调用.attr'fileid'来获取所需的内容:

const $fileChecks = $('.fileCheck:checked');
$fileChecks.each(function() {
  const file = $(this).attr('fileid');
  alert(file+"has been selected");
});
const count = $fileChecks.length;

您也可以考虑使用数据属性而不是像FielID这样的非标准属性:


const不受Javascriptconst支持。ES2015中引入了const,这是很久以前的事了,它确实是有效的语法,大多数浏览器都支持它。一般来说,最好使用最新最好的语言版本编写,并将其传输到ES5进行生产,以便像IE这样过时的浏览器能够理解它,但是对于这里发生的事情,您可以使用var,而不是var。您的答案工作得很好,但是您介意对代码进行一点深入的解释吗?我无法理解这在每个回调中都引用了您正在迭代的项。获取.attr将返回jQuery对象中第一个元素的值,因此要在检索所有属性时使用.attr,首先必须创建一个只包含一个元素的jQuery对象。当然,您也可以使用普通的DOM方法来实现这一点,jQuery只会使这一点变得更加复杂,那么如何将这个fileid传递给jQuery数据:{nodeid=file}?因为它一直抛出引用id:找不到文件
const $fileChecks = $('.fileCheck:checked');
$fileChecks.each(function() {
  const file = $(this).attr('fileid');
  alert(file+"has been selected");
});
const count = $fileChecks.length;
<input type="checkbox" data-fileid="foo">
$(this).data('fileid');