Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么样式不能与ClassList.Add()一起应用?_Javascript_Html_Css_Class_Styles - Fatal编程技术网

Javascript 为什么样式不能与ClassList.Add()一起应用?

Javascript 为什么样式不能与ClassList.Add()一起应用?,javascript,html,css,class,styles,Javascript,Html,Css,Class,Styles,我正在使用JavaScript创建一个表,默认情况下,表中的所有单元格都要右对齐: .my-table td { text-align: right; } 但是,在某些情况下,我希望单元格左对齐 .my-table td.left { text-align: left !important; } 对于这些单元格,我添加了类名,如下所示: my_cell.classList.add("left"); 在DOM树中查看时,我可以看到名称已成功应用于单元格。但是,样式没有应用

我正在使用JavaScript创建一个表,默认情况下,表中的所有单元格都要右对齐:

.my-table td { text-align: right; }
但是,在某些情况下,我希望单元格左对齐

.my-table td.left { text-align: left !important; }
对于这些单元格,我添加了类名,如下所示:

my_cell.classList.add("left");
在DOM树中查看时,我可以看到名称已成功应用于单元格。但是,样式没有应用,当我在开发工具中查看元素的样式时,它甚至没有出现。通常,如果某个样式被覆盖,我会在样式下看到类名,并且在被覆盖的样式中有一行。但是,“left”类名根本不会出现在可能应用的样式下,即使当我查看DOM树时它位于元素的类名列表中

为什么/如何将类名应用于元素,但绝对没有与之关联的样式

我尝试了排列我的定义:

.my-table td.left { text-align: left !important; }

.my-table td .left { text-align: left !important; }
等等,但没有任何效果

以下是我当前的脚本:

<script type="text/javascript">
    jQuery(document).ready(function() {

        jQuery("#reference").load(URL);

        let table_div = document.createElement("table");
        table_div.classList.add("my-table");

        let tbody = table_div.appendChild(document.createElement("tbody"));
      
        let rows = document.getElementById("reference").getElementsByTagName("tr");
      
        for (let i = 0; i < rows.length; i++) {
          
            let table_row = tbody.appendChild(document.createElement("tr"));
          
            if (i === 0) { // leave header row alone
                 table_row.innerHTML = rows[i].innerHTML;
                 continue;
            }
            
            let cells = rows[i].getElementsByTagName("td")
        
            for (let j=0; j < cells.length; j++) {
                                    
                let td = table_row.appendChild(document.createElement("td"));
                let val = cells[j].innerHTML;
                td.innerHTML = val;
              
                if (val.includes("%"))
                    continue;
              
                td.classList.add("left");
            }
        }
            
        document.getElementById("my_table").appendChild(table_div);
    });

</script>

jQuery(文档).ready(函数(){
jQuery(“#引用”).load(URL);
让table_div=document.createElement(“table”);
表_div.classList.add(“我的表”);
设tbody=table_div.appendChild(document.createElement(“tbody”);
让行=document.getElementById(“参考”).getElementsByTagName(“tr”);
for(设i=0;i
我不知道为什么会发生这种情况,但是您可以尝试创建两个具有相同属性的类名,除了对齐,然后在需要时切换(意思是删除或插入)

您可以尝试内置的.toggle()方法。
只是一个建议☺

你应该看到
my_cell.className.add不是一个函数
,因为它是
classList
:啊,这是我文章中的一个输入错误,不是我的代码。我将更新postAh。好的,您必须创建一个演示错误的示例。您可以添加一个工作示例吗?最好看看发生了什么。嗨,不幸的是,即使删除默认样式也无济于事。就好像DOM根本看不到任何与“left”类相关联的样式一样,我的意思是创建多个具有相同样式属性的类名,除了对齐方式,然后切换类名。您还可以尝试添加过渡或动画。