Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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_Css - Fatal编程技术网

Javascript 仅将样式应用于特定的选择选项

Javascript 仅将样式应用于特定的选择选项,javascript,jquery,css,Javascript,Jquery,Css,我想为我的选择下拉列表的特定选项添加背景色。目前我正在使用以下选项,但它将颜色应用于下拉列表下的所有选项。我有一个选项是”,这个选项我需要是红色的 if (document.getElementById('agileteams' + x).value.length < 1 && array3[i]['Agile_Team'] == null) { document.getElementById('agileteams' + x).style.backgroundCo

我想为我的
选择
下拉列表的特定
选项
添加背景色。目前我正在使用以下选项,但它将颜色应用于下拉列表下的所有选项。我有一个选项是
,这个选项我需要是红色的

if (document.getElementById('agileteams' + x).value.length < 1 && array3[i]['Agile_Team'] == null) {
    document.getElementById('agileteams' + x).style.backgroundColor = "#FF0000";
}
if(document.getElementById('agiletems'+x).value.length<1&&array3[i]['Agile\u Team']==null){
document.getElementById('agileteams'+x).style.backgroundColor=“#FF0000”;
}

我曾尝试向该选项添加一个类并更改CSS,但由于某些原因,这似乎不起作用。

以下是jquery版本:

解决方案1:如果您只想在初始加载时设置
背景色
。这需要使用jquery
每个
函数迭代
中的每个
选项

$('select option').each(function(){
   if($(this).attr("value") == "" || $(this).attr("value") == undefined)   
     $(this).css("background-color","#FF0000"); // 'this' refers to the option element inside select
});
解决方案2:如果您希望在选择
选项时只设置
背景色
。这需要在
选择上委派更改事件

$('select').on("change", function(){
   if($(this).find("option:selected").attr("value") == "" || $(this).find("option:selected").attr("value") == undefined)  
     $(this).css("background-color","#FF0000"); // 'this' refers to the element select.
   else
   $(this).css("background-color","#FFFFFF");
});

工作示例:

以下是jquery版本:

解决方案1:如果您只想在初始加载时设置
背景色
。这需要使用jquery
每个
函数迭代
中的每个
选项

$('select option').each(function(){
   if($(this).attr("value") == "" || $(this).attr("value") == undefined)   
     $(this).css("background-color","#FF0000"); // 'this' refers to the option element inside select
});
解决方案2:如果您希望在选择
选项时只设置
背景色
。这需要在
选择上委派更改事件

$('select').on("change", function(){
   if($(this).find("option:selected").attr("value") == "" || $(this).find("option:selected").attr("value") == undefined)  
     $(this).css("background-color","#FF0000"); // 'this' refers to the element select.
   else
   $(this).css("background-color","#FFFFFF");
});

工作示例:

您的html看起来像什么?您所拥有的应该可以工作,但请注意,样式设置
选项
元素最多只能提供非常零碎的支持。但在Chrome47中,它似乎确实对我有效:。如果你需要这种行为在跨浏览器中是可靠的,我建议你使用一个插件,比如Select2,它可以将
select
元素转换为HTML,可以自由设置样式。既然你已经在使用JS,那么你需要记住一点:你是否愿意接受jquery解决方案?@Rorymcrossan谢谢你提供的信息。代码确实可以为下拉列表中的所有选项设置样式,但我只想将下拉列表中的第一个选项设置为红色。您的html看起来像什么?您的html应该可以工作,但请注意,样式设置
选项
元素最多只能提供非常零碎的支持。但在Chrome47中,它似乎确实对我有效:。如果你需要这种行为在跨浏览器中是可靠的,我建议你使用一个插件,比如Select2,它可以将
select
元素转换为HTML,可以自由设置样式。既然你已经在使用JS,那么你需要记住一点:你是否愿意接受jquery解决方案?@Rorymcrossan谢谢你提供的信息。该代码确实可以设置下拉列表中所有选项的样式,但我只想将下拉列表中的第一个选项设置为红色。