Javascript 项目编号为';t从输入更改函数内的数组中删除

Javascript 项目编号为';t从输入更改函数内的数组中删除,javascript,jquery,Javascript,Jquery,下面是我的HTML代码 + 这里是Jquery $(document).ready(function() { var inputs = $('.createCaseImgInput'); var $availableInputs = [0, 1, 2, 3]; var randomAvailableInputs = $availableInputs[Math.floor(Math.random()*$availableInputs.length)]; $(

下面是我的HTML代码


+
这里是Jquery

$(document).ready(function() {

    var inputs = $('.createCaseImgInput');
    var $availableInputs = [0, 1, 2, 3];
    var randomAvailableInputs = $availableInputs[Math.floor(Math.random()*$availableInputs.length)];

    $(document).on('click', '#createCaseImgUploadBtn', function() {
        $("#"+randomAvailableInputs).trigger('click');
    });

    inputs.on('change', function() {

        triggeredInputNumber = $(this).attr('id');
        removeInputNumber = parseInt(triggeredInputNumber);

        $availableInputs = $availableInputs.splice($availableInputs.indexOf(removeInputNumber), 1);

        console.log(removeInputNumber );
        console.log($availableInputs);


    });

});


我已经为可用输入字段创建了一个与ID链接的数字列表,在单击createCaseImgUploadBtn后,它会触发列表中的任何随机输入,在选择了我想从可用输入中删除该数字的文件后,但它不起作用。基本上,整个要点是,我不希望它在选择文件后再次触发相同的文件输入字段。

问题在于您使用splice重新指定。我不需要那个。只需使用拼接。拼接更改数组的内容

其次,初始化
document.ready
上的
randomAvailableInputs
值。每次单击按钮时,该值将保持不变

单击按钮时,您需要为
randomAvailableInputs
指定一个值,以便该值根据
$availableInputs
数组进行更改

检查下面

$(文档).ready(函数(){
变量输入=$('.createCaseImgInput');
var$availableInputs=[0,1,2,3];
$(文档)。在('click','createCaseImgUploadBtn',函数()上{
//把这个搬过来
var randomAvailableInputs=$availableInputs[Math.floor(Math.random()*$availableInputs.length)];
$(“#”+随机可用输入)。触发器('click');
});
inputs.on('change',function(){
triggeredInputNumber=$(this.attr('id');
removeInputNumber=parseInt(triggeredInputNumber);
$availableInputs.splice($availableInputs.indexOf(removeInputNumber),1);
console.log(removeInputNumber);
console.log($availableInputs);
});
});

点击我

$availableInputs=$availableInputs.splice($availableInputs.indexOf(removeInputNumber))1)您不需要重新分配
$availableInputs
-
。splice
执行就地删除。当您重新分配变量时,下次尝试使用它时,您将得到
splice
的结果,这是一个包含已删除项的数组。@VLAZ仍然不工作,它只是触发并覆盖相同的文件输入,现在又开始工作了,哈哈,真的没有注意到!非常感谢你。您总是在该
randomavableInputs
上获得相同的值,因为它在
document.ready
上被赋予了一个值,并且此后从未更改。这就是为什么您需要在单击时动态地给它一个值。很高兴我能帮上忙。这是一个简单的代码。您应该使用
var
(或const/let)声明变量<代码>触发输入编号
删除输入编号
。在这里检查。并且在命名变量时保持一致性(前面有/没有
$
)。单击功能而不是
文档
,您可以使用
,因为它将直接在document.ready功能中引用文档。但是您可以将单击功能更改为直接应用于按钮
$(按钮)。在('click',function(){}
$(按钮)。单击