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