选择选项仅返回一个选项

时间:2015-09-16 08:22:21

标签: javascript jquery

我有一个选择选项,有两种颜色,红色和蓝色。当我选择红色时,它应该将背景颜色设置为红色,如果我选择蓝色,则应将背景颜色设置为蓝色。问题在于,无论我选择什么,它都会将背景颜色设置为红色。

<select id ="selectColor">
    <option >none</option>
    <option value="red">Red</option>
    <option value="blue">Blue</option>
</select>

$(document).ready(function () {
    $("#selectColor").change(function () {
        if ($(this).text != "red") {
            document.body.style.backgroundColor = "blue";
        }
        if ($(this).text !="blue")
         {
          document.body.style.backgroundColor = "red";
         }
    });
});

6 个答案:

答案 0 :(得分:2)

实际上,它首先将背景设置为蓝色,然后是红色,因为$(this).text不等于。这可能是undefined

您正在寻找.val()方法,以提取value属性。

$(document).on('ready', function () {
  $("#selectColor").on('change', function () {
    var val = $(this).val();
    
    document.body.style.backgroundColor = val;
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<select id="selectColor">
    <option value="">none</option>
    <option value="red">Red</option>
    <option value="blue">Blue</option>
</select>

答案 1 :(得分:2)

有最短最简单的例子:

&#13;
&#13;
City.search "san fr", fields: [{name: :text_start}]
&#13;
&#13;
&#13;

答案 2 :(得分:1)

你的javascript应该是这样的:

$(document).ready(function () {
$("#selectColor").change(function () {
    if ($(this).val() != "red") {
        document.body.style.backgroundColor = "blue";
    }
    else if ($(this).val() !="blue")
        {
        document.body.style.backgroundColor = "red";
    }
});
});

使用val()可以获得选项的值。如果您使用的是“文本”,则会获得所有选项的所有文本,以及if if

答案 3 :(得分:1)

jQuery对象上的text属性始终是一个函数。它永远不会是你要测试的叮咬,所以你的所有条件都会匹配。颜色将变为蓝色,然后立即变为红色。

您想使用val()而不是text

答案 4 :(得分:1)

使用val()而不是text();

name

DEMO

答案 5 :(得分:1)

以下是使用jQuery的示例: -

$(document).ready(function () { 
    $("#selectColor").change(function () {
        if ($(this).val() === "red") {
            $('body').css('background-color', 'blue');
        } else {
            $('body').css('background-color', 'red');
        }
    });

以JS小提琴为例 - EXAMPLE     });