开发者社区> 问答> 正文

js/jquery批量修改样式

 <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"
用js怎么写 谢谢
多谢多谢
还有个问题:
如果我这样写:

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",是我的循环出了什么问题么,如果要按这种写法,要怎么修改呢?

展开
收起
吴孟桥 2016-06-02 16:21:01 3590 0
2 条回答
写回答
取消 提交回答
  • for(let p of  document.querySelectorAll('div>p')) {
        let cls = aa.find(m=>m.id==p.id) ? 'a' : 'b'
        p.classList.add(cls)
    }
    2019-07-17 19:25:10
    赞同 展开评论 打赏
  • $("div p").each(function(){
    var id = $(this).attr("id");
    //判断id是否在数组中;
    $(this).addClass("a"或者"b");
    });

    2019-07-17 19:25:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载