Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 更改元素的类别_Javascript_Jquery_Html - Fatal编程技术网

Javascript 更改元素的类别

Javascript 更改元素的类别,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试改变循环中td元素的类,但是我没有一个真正有效的解决方案,请有人能帮助我,提前谢谢 HTML: 脚本: $.post(url, filteredObject, function (data) { for (i = 0; i < 7; i++) { $('#varperc' + (i + 1).toString()).text(numberWithCommas(data[i].varperc)); var cls = parseInt($

我正在尝试改变循环中td元素的类,但是我没有一个真正有效的解决方案,请有人能帮助我,提前谢谢

HTML:

脚本:

 $.post(url, filteredObject, function (data) {
    for (i = 0; i < 7; i++) {
        $('#varperc' + (i + 1).toString()).text(numberWithCommas(data[i].varperc));

        var cls = parseInt($('#varperc' + (i + 1).toString()).text());

        if (cls < 0) {
            $('#varperc' + (i + 1).toString()).addClass("fa fa-level-down");
            $('#varperc' + (i + 1).toString()).removeClass("fa-level-up");
            $('.text-primary').removeClass('primary');
            $('.text-').addClass('warning');
        }
        else {
            $('#varperc' + (i + 1).toString()).addClass("fa fa-level-up");
            $('#varperc' + (i + 1).toString()).removeClass("fa-level-down");
            $('.text-primary').removeClass('primary');
            $('.text-').addClass('navy');
        }
    }
});
你有

$('.text-primary').removeClass('primary')
我想你想要

$('.text-primary').removeClass('text-primary')
您可以添加不同的类,而不是使用

$('.text-primary').removeClass('text-primary').addClass('navy')
然后,

$('.text-').addClass('navy');
已经过时了,我觉得它以前也没用过


请参阅文档。

根据您的评论,您希望更改.text主类I,假设您希望将其更改为“text navy”或“text warning”。在这种情况下,更改:

 $('.text-primary').removeClass('primary');
 $('.text-').addClass('navy');
致:


这是因为没有类primary,css类不是这样工作的,您只需要将.text primary变成.text navy,然后您应该删除.text primary并添加.text navy类。或者,您可以将系统更改为使用这些类

<>你可以考虑使用上面的代码:

 var $varperc = $('#varperc' + (i + 1).toString());

 $varperc
    .closest('.text-primary')
    .removeClass('text-primary')
    .addClass('text-navy');

我认为实现这一点的更好的动态方法是使用$。jquery的每个循环

试一试

你的html

<table>
    <tr>
    <td class="text-primary"> <i class="" id="varperc1"></i></td>
    <td class="text-primary"> <i class="" id="varperc2"></i></td>
    <td class="text-primary"> <i class="" id="varperc3"></i></td>
    <td class="text-primary"> <i class="" id="varperc4"></i></td>
    <td class="text-primary"> <i class="" id="varperc5"></i></td>
    <td class="text-primary"> <i class="" id="varperc6"></i></td>
    <td class="text-primary"> <i class="" id="varperc7"></i></td>
</tr>

</table>
和js

$.each($('table tr td'),function(i,j){
    $(this).find('i[id*=varperc]').text(numberWithCommas(data[i].varperc));

        var cls = parseInt($(this).find('i[id*=varperc]').text('test'+i));

        if (cls < 0) {
            $(this).find('i[id*=varperc]').addClass("fa fa-level-down");
            $(this).find('i[id*=varperc]').removeClass("fa-level-up");
            $(this).removeClass('text-primary');
            $(this).addClass('warning');
        }
        else {
            $(this).find('i[id*=varperc]').addClass("fa fa-level-up");
            $(this).find('i[id*=varperc]').removeClass("fa-level-down");
            $(this).removeClass('text-primary');
            $(this).addClass('navy');
        }
});

什么不起作用?文本主类没有改变…可能改变$'.text primary.removeClass'primary';到$'.text primary'。删除类'text-primary';使用$.each迭代检查我的答案的详细信息,但是该类将是空的..我如何为它分配一个新类?我扩展了答案
<table>
    <tr>
    <td class="text-primary"> <i class="" id="varperc1"></i></td>
    <td class="text-primary"> <i class="" id="varperc2"></i></td>
    <td class="text-primary"> <i class="" id="varperc3"></i></td>
    <td class="text-primary"> <i class="" id="varperc4"></i></td>
    <td class="text-primary"> <i class="" id="varperc5"></i></td>
    <td class="text-primary"> <i class="" id="varperc6"></i></td>
    <td class="text-primary"> <i class="" id="varperc7"></i></td>
</tr>

</table>
$.each($('table tr td'),function(i,j){
    $(this).find('i[id*=varperc]').text(numberWithCommas(data[i].varperc));

        var cls = parseInt($(this).find('i[id*=varperc]').text('test'+i));

        if (cls < 0) {
            $(this).find('i[id*=varperc]').addClass("fa fa-level-down");
            $(this).find('i[id*=varperc]').removeClass("fa-level-up");
            $(this).removeClass('text-primary');
            $(this).addClass('warning');
        }
        else {
            $(this).find('i[id*=varperc]').addClass("fa fa-level-up");
            $(this).find('i[id*=varperc]').removeClass("fa-level-down");
            $(this).removeClass('text-primary');
            $(this).addClass('navy');
        }
});