javascript-警报未提供正确的fileID值

时间:2019-03-06 10:53:33

标签: javascript

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

Screenshot

每个文件都有其自己的唯一文件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。

我在这里做错了吗?

请帮助

编辑:

function fireGENURL(a){
    try{

        var selectedFiles = $('.fileCheck:checked');
        if(selectedFiles.length < 1 ){
            alert("Please select at least one file.");
            return false;
        }

       // var fileID = $(selectedFiles[0]).attr('fileid');
        var $fileChecks = $('.fileCheck:checked');
        $fileChecks.each(function() {
            var file = $(this).attr('fileid');
            alert(file+"has been selected");
        });
        var count = $fileChecks.length;



        $('body').pWin("open", {
            x: 260,
            y: 47,
            height: 450,
            width: 881,
            title: "Generate URL",
            skinMode:'dialog',
            iframe:true,
            url: "file/url/genurl.jsp",
            data: {
                nodeid : file


            },
            offResize:true,
            offMove:true,
            onTitle:false,
            offBottom:true
        });



    }catch(e)
    {
        alert(e);
    }


}

1 个答案:

答案 0 :(得分:1)

使用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;

您还可以考虑使用data-属性,而不要使用fileid之类的非标准属性:

<input type="checkbox" data-fileid="foo">

并使用

进行检索
$(this).data('fileid');