Javascript:在添加CSS样式的同时循环遍历数组

时间:2013-03-10 17:04:40

标签: javascript css loops

我有一个for循环。

在循环中有一个if语句,如果发现下拉列表为空,则会添加错误css样式。

我的问题是循环仅循环 3 次,然后在它应该循环 15 次时停止.....并且我不知道为什么。

循环单独工作正常,但是当我添加if语句时,就会变得很奇怪。

帮助。

这是我的循环

//add all the id's in an array. array size is 15
var drop_down=["Cars_chassis","Cars_model".....];

for (var i = 0; i < drop_down.length; i++) {
    //check if dropdown is empty
    if(document.getElementById(drop_down[i]).value == ""){

        //change the color of border 
        $('#'+drop_down[i]).css('border-color' , '#dddcdc');
     }
}

3 个答案:

答案 0 :(得分:2)

我建议为这些元素中的每一个添加一个CSS类,而不是指定它们的id。当一个班级可以做到这一点时,为什么要管理所有这些ID?

<select id="Cars_chassis" class="bordered-select"></select>
<!-- Add class to other 15 -->

此时,您可以静态地为CSS中的这些下拉列表定义样式。

.bordered-select{
   border-color: #DDDCDC;
}

或者使用类选择器在元素上设置样式。看来你使用的是jQuery,所以下面的例子就可以了。

$(".bordered-select").css('border-color', '#DDDCDC');

如果您只需要突出显示没有值的那些,则以下内容将删除那些没有来自匹配元素集的值的内容:

$(".bordered-select").filter(function(){
  return $(this).val() == "";
}).css("border-color", "#DDDCDC");

工作示例: http://jsfiddle.net/v4hQz/

答案 1 :(得分:0)

document.getElementById(drop_down[i]); //returns a HTML DOM Object

var contents = $('#' + drop_down[i]);  //returns a jQuery Object

您可以尝试将if(javascript)替换为if(jquery语法)

答案 2 :(得分:0)

var drop_down=["Cars_chassis","Cars_model".....];

for (var i = 0; i < drop_down.length; i++) {
    //check if dropdown is empty
    if( $('#' + drop_down[i]).value == ""){

        //change the color of border 
        $('#'+drop_down[i]).css('border-color' , '#dddcdc');
     }
}

或者你可以尝试

var drop_down=["Cars_chassis","Cars_model".....];
var contents = $('#'  + drop_down[i]);
for (var i = 0; i < drop_down.length; i++) {
    //check if dropdown is empty

    if( $(contents[0]).value == ""){

        //change the color of border 
        $('#'+drop_down[i]).css('border-color' , '#dddcdc');
     }
}