javascript - Jquery .css() 不起作用(可能是由其他原因引起的)

标签 javascript html jquery

我正在尝试使用 JavaScript 和 jQuery 为表单插入一些 CSS 规则。
不幸的是它不起作用。 单击任何输入时,我想对具有相同“名称”的所有输入进行一些检查,并应用或删除类或 CSS 规则。 这是我的 Html:

<input type="text" class="form-control form-control-lg form-style input1" name="input-class" value="" placeholder="John">
<label class="form-label-input form-label-input-1">Name:</label>

<input type="text" class="form-control form-control-lg form-style input2" name="input-class" value="" placeholder="Doe">
<label class="form-label-input form-label-input-2">Surname:</label>

<input type="text" class="form-control form-control-lg form-style input3" name="input-class" value="" placeholder="Passions">
<label class="form-label-input form-label-input-3">Passions:</label>

这是我的脚本,附有一些解释:

    //On Click of all the elements with name="input-class"        
    document.querySelectorAll('input[name="input-class"]').forEach(item => {
        item.addEventListener('click', event => {
            
            //Get all Inputs in a Static NodeList
            const inputer = document.querySelectorAll('input[name="input-class"]');
            
            //Convert the List into an Array
            var btnsArri = Array.from(inputer);
            
            
            //Loops through all the array on inputs
            var i;
            for (i = 0; i < btnsArri.length; i++) {
                
                if(btnsArri[i] === document.activeElement){
                    
                    if(btnsArri[i].value === ""){
                        console.log(i + ' is empty and selected')
                        //Recreate the name of the class
                        j = 1
                        h = j + i;

                        var label = 'form-label-input-' + h;
                        var inputChanger = $(btnsArri[i]).attr('class').split(' ')[3];

                        console.log(label)
                        
                        //add CSS Rule
                        //------------------------THAT'S WHERE I'M STUCK..--------------------
                       setTimeout(function(){ $(inputChanger).css({"width":"105%"})}, 0);
                        setTimeout(function(){ $(label).css({"font-size":".6rem"})}, 0);
                    }
                    
                    if(btnsArri[i].value !== ""){
                        console.log(i + ' is full and selected')
                    }
                    
                }
                
                if(btnsArri[i] !== document.activeElement){
                    if(btnsArri[i].value === ""){
                        console.log(i + ' is empty')
                    }
                    if(btnsArri[i].value !== ""){
                        console.log(i + ' is full')
                    }
                }
                
            }
            
            
        }) 
    })

代码工作得很好,只是部分 setTimeout(function(){ $(inputChanger).css({"width":"105%"})}, 0); setTimeout(function(){ $(label).css({"font-size":".6rem"})}, 0); 不起作用。最糟糕的是它没有返回任何错误所以我有点迷失了。

最佳答案

我认为选择器是错误的,您似乎正在使用jquery并尝试通过类名访问项目,代码应该是这样的:

setTimeout(function(){ $('.'+inputChanger).css({"width":"105%"})}, 0);
setTimeout(function(){ $('.'+label).css({"font-size":".6rem"})}, 0);

您似乎已决定为此目的使用唯一的类名,但您也可以使用 input1、input2 和 input3 作为输入元素的唯一 ID,在这种情况下,您可以通过 $('# 访问它们'+id)

关于javascript - Jquery .css() 不起作用(可能是由其他原因引起的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66876385/

相关文章:

javascript - jquery计算选中复选框旁边的html值

javascript - OnKeyup 搜索字符串和隐藏/显示 - jQuery

javascript - JQuery Mobile 动态添加的页面没有主题

javascript - 如何重新加载javascript而不是页面

javascript - 在具有自定义输出的 Highcharts 中使用 columnrange 图表类型?

javascript - 相同的 Controller ,相同的模板,相同的资源,但一个是嵌套状态,另一个不是

html - 与 css 不同的文件夹中的 css 背景图像

html/css - 布局自动留边距

html - 如何在 NavBar 的媒体查询中居中对齐/对齐菜单项?

jquery - Bootstrap 轮播带居中 div 和多个 div 显示