lzl4744 2015-10-26 19:46 采纳率: 16.7%
浏览 2048

js 嵌套循环问题 修改样式

    <div><p id="1">aa</p></div>
    <div><p id="2">aa</p></div>
    <div><p id="32">aa</p></div>
    <div><p id="44">aa</p></div>
    <div><p id="8">aa</p></div>
    <div><p id="13">aa</p></div>
    <div><p id="4">aa</p></div>
    <div><p id="11">aa</p></div>

var aa=[{"id":1,"name":"yi"},{"id":4,"name":"si"},{"id":6,"name":"liu"},{"id":8,"name":"ba"},{"id":"a","name":"aaa"}];

我想把id在数组aa中的div加上class="a"
否则加上class="b"

如果我这样写:

    var div = $("div");
    for (var i = 0; i < aa.length; i++) {
        var tId = aa[i].id;
        for (var j = 0; j < div.length; j++) {
            var fId = $(div[j]).find("p").attr("id");
            if (tId == fId) {
                div.addClass("a");
            } else {
                div.addClass("b")
            }
        }
    }

结果每个div都变成了

 <div class="a b">

,我只是想把包含

id="1"和id="4"的div加上class="a",是我的循环出了什么问题么,要怎么修改呢?

  • 写回答

3条回答 默认 最新

  • 逝_去_的_光_阴 2015-10-26 21:28
    关注

    div是所有的div不是当前的div,所以div加减class都是同步的。
    可以转换思路,先统一加上class b,然后匹配的div先删掉class b,再加上class a

     var div = $("div");
     div.addClass("b");
        for (var i = 0; i < aa.length; i++) {
            var tId = aa[i].id;
            for (var j = 0; j < div.length; j++) {
                var fId = $(div[j]).find("p").attr("id");
                if (tId == fId) {
                                    $(div[j]).removeClass("b");
                    $(div[j]).addClass("a");
                }
            }
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类