猿问

用于切换类中所有标签的 Javascript 函数未执行

我正在尝试使用 Javascript 来切换类,该类在 Django 生成的模板上运行。我有以下代码:


document.addEventListener('DOMContentLoaded', function() {


    document.querySelectorAll('.cat').forEach(category => {

        category_id = category.getAttribute('id').slice(1,);

        var toggle_class_name = `child-of-${category_id}`;

        category.addEventListener('click', () => toggle_class(toggle_class_name));

    });

});


function toggle_class(toggle_class_name) {

    console.log(toggle_class_name);

    document.querySelectorAll(toggle_class_name).forEach(item => {

        console.log('loop triggered');

        var current_display = item.style.display;

        

        if (current_display === 'none') {

            current_display = 'block';

            console.log(`expanding`);

        }

    

        else {

            current_display = 'none';

            console.log(`collapsing`);

        }

        

        item.style.display = current_display;

    });

};

<div>

    <table class='table'>

        <tr>

            <th class='ref-col'>Reference</th>

            <th class='des-col'>Description</th>

            

                <th class='mth-head'>Jun-20</th>    

            

                <th class='mth-head'>Jul-20</th>    

            

                <th class='mth-head'>Aug-20</th>    

            

        </tr>

        

            <tr id='c2' class='child-of-None cat'>

                <td class='ref-col'>C0002</td>

                <td class='des-col'>Financial Statements</td>

                

                    <td class='amt-col'></td>

                

                    <td class='amt-col'></td>

                

                    <td class='amt-col'></td>

                

            </tr>


当toggle_class_name正确登录到控制台时,toggle_class函数就会被触发。但是,其他任何事情都不会登录到控制台上。当我单击“类别”时,DOM 中属于“toggle_class_name”类的标签不会切换。这些标签还有除“toogle_class_name”之外的其他类。


为什么课程没有切换?


慕标5832272
浏览 147回答 1
1回答

qq_笑_17

您的代码中有几个问题:.slice(1, );- 我认为这是一个语法错误。应该是.slice(1);(没有逗号).选择器缺少类名的点- 因此更改此行以包含它,如下所示:var toggle_class_name = '.child-of-${category_id}';最好使用所需的属性切换类,而不是手动添加删除属性请参阅下面的工作演示:document.addEventListener('DOMContentLoaded', function() {&nbsp; document.querySelectorAll('.cat').forEach(category => {&nbsp; &nbsp; category_id = category.getAttribute('id').slice(1);&nbsp; &nbsp; var toggle_class_name = `.child-of-${category_id}`;&nbsp; &nbsp; category.addEventListener('click', () => toggle_class(toggle_class_name));&nbsp; });});function toggle_class(toggle_class_name) {&nbsp; console.log(toggle_class_name);&nbsp; document.querySelectorAll(toggle_class_name).forEach(item => {&nbsp; &nbsp; item.classList.toggle('hidden');&nbsp; });};tr.hidden{&nbsp; display: none;}<div>&nbsp; <table class='table' border=1>&nbsp; &nbsp; <tr>&nbsp; &nbsp; &nbsp; <th class='ref-col'>Reference</th>&nbsp; &nbsp; &nbsp; <th class='des-col'>Description</th>&nbsp; &nbsp; &nbsp; <th class='mth-head'>Jun-20</th>&nbsp; &nbsp; &nbsp; <th class='mth-head'>Jul-20</th>&nbsp; &nbsp; &nbsp; <th class='mth-head'>Aug-20</th>&nbsp; &nbsp; </tr>&nbsp; &nbsp; <tr id='c2' class='child-of-None cat'>&nbsp; &nbsp; &nbsp; <td class='ref-col'>C0002</td>&nbsp; &nbsp; &nbsp; <td class='des-col'>Financial Statements</td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; </tr>&nbsp; &nbsp; <tr id='c1' class='child-of-2 cat'>&nbsp; &nbsp; &nbsp; <td class='ref-col'>C0001</td>&nbsp; &nbsp; &nbsp; <td class='des-col'>&nbsp&nbsp&nbspBalance Sheet</td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; </tr>&nbsp; &nbsp; <tr id='c6' class='child-of-1 cat'>&nbsp; &nbsp; &nbsp; <td class='ref-col'>C0006</td>&nbsp; &nbsp; &nbsp; <td class='des-col'>&nbsp&nbsp&nbsp&nbsp&nbsp&nbspNon-Current Assets</td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; </tr>&nbsp; &nbsp; <tr id='c11' class='child-of-6 cat'>&nbsp; &nbsp; &nbsp; <td class='ref-col'>C0011</td>&nbsp; &nbsp; &nbsp; <td class='des-col'>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspProperty, Plant &amp; Equipment</td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; </tr>&nbsp; &nbsp; <tr id='g1000001' class='child-of-11 gl'>&nbsp; &nbsp; &nbsp; <td class='ref-col'>1000001</td>&nbsp; &nbsp; &nbsp; <td class='des-col'>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspFreehold Land</td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; &nbsp; <td class='amt-col'></td>&nbsp; &nbsp; </tr>&nbsp; </table></div>
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答