JavaScript 警报未给出正确的 fileID 值

标签 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");

        }

当我勾选一个框时,它会正确返回警报值,但是当我勾选两个框时,它会返回警报两次,但会返回第一个复选框的文件ID。它返回两次相同的 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);
    }


}

最佳答案

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

关于JavaScript 警报未给出正确的 fileID 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55021335/

相关文章:

javascript - 在 Python 中转义 JavaScript 字符串

javascript - 在非持久性后台脚本上添加上下文菜单项?

javascript - jQuery 已弃用同步 XMLHTTPRequest

javascript - Angular 2路由器无需重新加载即可更改网址

javascript - D3可缩放时间线,如何获取实际极值?

javascript - 强制 CSS :hover to update after a transition (opening a menu) 的解决方法

javascript - 将图标添加到 js.erb.html 中的 link_to?

javascript - 如何使用 Node js 运行 html 文件

javascript - 如何记录按键事件的时间?

javascript - Angular - 从服务重新填充表单输入