Javascript循环遍历对象值并根据值更改css
我正在编写一个脚本,它循环遍历一个对象,首先获取元素,然后尝试循环遍历元素的值,以便更改CSS。以下是脚本:Javascript循环遍历对象值并根据值更改css,javascript,loops,object,Javascript,Loops,Object,我正在编写一个脚本,它循环遍历一个对象,首先获取元素,然后尝试循环遍历元素的值,以便更改CSS。以下是脚本: $(document).ready(function() { var carParts = { doors: { flDoor: 'LOCKED', blDoor: 'LOCKED', frDoor: 'LOCKED', brDoor: 'LOCKED' } } var lights = 'OFF'; if
$(document).ready(function() {
var carParts = {
doors: {
flDoor: 'LOCKED',
blDoor: 'LOCKED',
frDoor: 'LOCKED',
brDoor: 'LOCKED'
}
}
var lights = 'OFF';
if (lights === 'OFF') {
$('.lights').css("display", "none");
}
for(var i in carParts.doors) {
for(var key in carParts.doors) {
var value = carParts.doors[key];
console.log(value);
if (value === 'locked') {
$('.'+i+'-open').css("display", "none");
}
}
}
})
所以我想循环遍历carparts.door对象,得到实际的flDoor、blDoor、frDoor、brDoor。在最后一行jquery中需要这些名称来指定正确的类名。除非实际值被锁定,否则我不希望该行被触发。我是javascript新手,还在学习。非常感谢您对代码的任何反馈。
锁定的
是大写的。你是在用小写字母比较。试试这个:
if (value === 'LOCKED') {
//
}
为什么有两个循环?一个就够了
HTML
var灯='OFF';if(lights=='OFF')
应该是if(true)
;)
并且您似乎正在将大写字母LOCKED
与for in
循环中的字符串LOCKED
进行比较:JavaScript是区分大小写的,您需要注意这一点(或者在字符串比较中使用.toLowerCase()
)。现在,在循环语句中使用适当的大小写,我希望它一个接一个地进行检查并更改css。它看起来好像正在通过,如果任何一个值被锁定,它将为所有内容分配一个显示:无样式。同样,谢谢,上面的David,你说了同样的话,我评论了其他人是否有任何其他想法。这非常有效,谢谢。正如我所说的,javascript有点新,所以为代码找出最佳方法以及如何编写代码仍然很困难。这个解决方案解决了所有问题,如果我能提高评分,我会的。
<div class="flDoor-open">flDoor</div>
<div class="blDoor-open">blDoor</div>
<div class="frDoor-open">frDoor</div>
<div class="brDoor-open">brDoor</div>
$(function () {
var carParts = {
doors: {
flDoor: 'OPENED',
blDoor: 'OPENED',
frDoor: 'LOCKED',
brDoor: 'LOCKED'
}
};
for (var key in carParts.doors) {
var value = carParts.doors[key];
if (value === 'LOCKED') {
$('.' + key + '-open').css("display", "none");
}
}
});