为什么它无法匹配?
var d = $('#bstudylevel').val(); // Bachelor
var g = $('#bfrench').val(); // Moedertaal
var h = $('#bnederlands').val(); // Moedertaal
switch(selected_language) { //NL
case 'NL':
if( ((d!=='Bachelor') || (d!=='Master') || (d!=='Doctoraat') ) &&
((g!=='Moedertaal') || (g!=='Zeer Goed') ) &&
((h!=='Moedertaal') || (h!=='Zeer Goed') )
) {
console.log("You do not match the requirement: ", d, g, h);
return false;
}
break;
case 'FR':
if( ((d!=='Bachelier') || (d!=='Master') || (d!=='Doctorat') ) &&
((g!=='Très bon') || (g!=='Bon') ) &&
((h!=='Très bon') || (h!=='Zeer Goed') )
) {
console.log("You do not match the requirement: ", d, g, h);
return false;
}
break;
}
console.log('Expected output is this..., not above');
输出:
您不符合要求:Bachelor Moedertaal Moedertaal
答案 0 :(得分:5)
因为在您的代码d
中始终有一个值为true的值:
if (((d !== 'Bachelor') || (d !== 'Master') || (d !== 'Doctoraat')) && ((g !== 'Moedertaal') || (g !== 'Zeer Goed')) && ((h !== 'Moedertaal') || (h !== 'Zeer Goed')))
<强> e.g。强>
d !== 'Master' //true,
d !== 'Doctoraat' //true
一种解决方案可能是使用具有所有度数的数组,并使用Array.prototype.indexOf如下:
var d = 'Bachelor';
var g = 'Moedertaal';
var h = 'Moedertaal';
var degrees = ['Bachelor', 'Master', 'Doctoraat', 'Moedertaal', 'Zeer Goed', 'Moedertaal', 'Zeer Goed'];
case 'NL':
//check if d meet the degrees requirements
if (degrees.indexOf(d) !== -1) {
console.log("You do not match the requirement: ", d, g, h);
return false;
}
break;
答案 1 :(得分:4)
在任何表达式中
((d!=='Bachelier') || (d!=='Master') || (d!=='Doctorat') )
考虑d
只能有一个值。因此,无论d
是什么,它都不等于其中一个字符串。它可能不是它们,也可能是其中之一,但它不会全部都是。
因此,始终的值为true
。
答案 2 :(得分:2)
不用担心,我们会帮助你。我在这里做了一个小提琴:https://jsfiddle.net/j9z8xyys/
var d = 'Bachelor';
var g = 'Moedertaal';
var h = 'Moedertaal';
selected_language = 'NL';
switch(selected_language) { //NL
case 'NL':
if( ((d!=='Bachelor') || (d!=='Master') || (d!=='Doctoraat') ) &&
((g!=='Moedertaal') || (g!=='Zeer Goed') ) &&
((h!=='Moedertaal') || (h!=='Zeer Goed') )) {
console.log("A");
return false;
}
break;
case 'FR':
if( ((d!=='Bachelier') || (d!=='Master') || (d!=='Doctorat') ) &&
((g!=='Très bon') || (g!=='Bon') ) &&
((h!=='Très bon') || (h!=='Zeer Goed'))) {
console.log("B");
return false;
}
break;
}
console.log("C");
它最终会因为符合条件而进入第一个控制台。该怎么办,也许是重写它的好主意。