Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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_If Statement - Fatal编程技术网

Javascript 如果从选择框中选择了一个或多个项目,如何创建条件参数?

Javascript 如果从选择框中选择了一个或多个项目,如何创建条件参数?,javascript,jquery,if-statement,Javascript,Jquery,If Statement,如果我有以下选择框: <select id="a1" multiple> <option>Apple</option> <option>Banana</option> <option>Carrot</option> <option>Dates</option> <option>Eggs</option> <option>French fries</

如果我有以下选择框:

<select id="a1" multiple>
<option>Apple</option>
<option>Banana</option>
<option>Carrot</option>
<option>Dates</option>
<option>Eggs</option>
<option>French fries</option>
</select>

苹果
香蕉
胡萝卜
日期
鸡蛋
炸薯条
编写有条件的
if
/
else
语句的正确方法是什么,以便仅在选择某些项时执行某些函数

意思是: 如果选择了苹果或香蕉,则如果满足条件#1并触发代码,则

但如果选择了胡萝卜、枣子或鸡蛋,那么如果满足条件2,就会触发不同的代码

编辑:我想我使用了这个数组中的项目作为例子,但是最有用的构造将把条件绑定到所选的索引,而不一定只绑定到字符串值。这样,任何选择框都可以使用条件参数,而不考虑其中的值。

这是怎么回事?


一种方法是使用相关索引到要在这些索引上调用的相关函数的映射,例如:

function functionOne() {
    console.log('functionOne called');
}

function functionTwo() {
    console.log('functionTwo called');
}

var functionMap = {
    '0-1-2': function(){
        functionOne();
    },
    '4-5': function(){
        functionTwo();
    }
};

$('select').change(function () {
    var valueString = $(this).find('option:selected').map(function () {
        return $(this).index();
    }).get().join('-');
    if (functionMap.hasOwnProperty(valueString)) {
        functionMap[valueString]();
    }
});

参考资料:

  • jQuery:
  • 纯JavaScript:

在选项上添加一个eventlistener并检查文本,或者添加额外的html值,如
data name=“banana”
?您想要条件的逻辑或访问值的代码?您可以将更改事件处理程序添加到选择事件,然后在那里添加
条件
function functionOne() {
    console.log('functionOne called');
}

function functionTwo() {
    console.log('functionTwo called');
}

var functionMap = {
    '0-1-2': function(){
        functionOne();
    },
    '4-5': function(){
        functionTwo();
    }
};

$('select').change(function () {
    var valueString = $(this).find('option:selected').map(function () {
        return $(this).index();
    }).get().join('-');
    if (functionMap.hasOwnProperty(valueString)) {
        functionMap[valueString]();
    }
});