检查多个条件值不输出else语句
Checking multiple condition values does not output the else statement
我正在尝试检查邮政编码列表,然后根据输入的邮政编码是否与列表中的邮政编码匹配,为变量 zipAssign
分配一个值。
在代码当前状态下总是显示"AB"。
有没有人看出我做错了什么?
$('#salesforce_submit').change(function () {
//Find AB Zip Code
var zipVal = '';
var zipAssign = '';
zipVal = $('#zip').val();
if (zipVal = 44030 || 44048 || 44082 || 44003 || 44093 || 44076 || 44062 || 44021 || 44046 || 44099 || 44032 || 44047 || 44010 || 44057 || 44086 || 44064 || 44024 || 44023 || 44065 || 44022 || 44072 || 44040 || 44143 || 44094 || 44139 || 44146 || 44128 || 44105 || 44122 || 44124 || 44121 || 44117 || 44108 || 44110 || 44103 || 44106 || 44118 || 44120 || 44104 || 44114 || 44127 || 44125 || 44131 || 44134 || 44129 || 44130 || 44144 || 44109 || 44115 || 44136 || 44133 || 44147 || 44141 || 44067 || 44056 || 44087 || 44195) {
zipAssign = 'AB';
} else {
zipAssign = '';
}
console.log(zipAssign);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="salesforce_submit" method="POST" enctype="multipart/form-data">
<div><input id="zip" placeholder="Zip/Postal Code*" class="input block" maxlength="6" name="zip" type="text" pattern= "[0-9]{5}"></div>
<input type="submit">
</form>
In the codes current state it always displays "AB".
Does anyone see what I am doing wrong?
因为 zipVal = 44030 || 44048
总是 return 一个真值。
创建一个 zipVals
的数组并使用 includes
var zipVals = [ 44030 , 44048 , 44082 , 44003 , 44093 , 44076 , 44062 , 44021 , 44046 , 44099 , 44032 , 44047 , 44010 , 44057 , 44086 , 44064 , 44024 , 44023 , 44065 , 44022 , 44072 , 44040 , 44143 , 44094 , 44139 , 44146 , 44128 , 44105 , 44122 , 44124 , 44121 , 44117 , 44108 , 44110 , 44103 , 44106 , 44118 , 44120 , 44104 , 44114 , 44127 , 44125 , 44131 , 44134 , 44129 , 44130 , 44144 , 44109 , 44115 , 44136 , 44133 , 44147 , 44141 , 44067 , 44056 , 44087 , 44195 ];
if ( zipVals.includes( +zipVal ) ) { //convert zipVal to a number before using includes
zipAssign = 'AB';
} else {
zipAssign = '';
}
你只是犯了一个小错误,你没有比较 (==) 两个值,而是在 if 条件下将一个值赋值给另一个值 (=)。
在这里我重新创建了你的代码。
$('#salesforce_submit').change(function () {
//Find AB Zip Code
var zipVal = '';
var zipAssign = '';
zipVal = $('#zip').val();
if (zipVal == 44030 || zipVal == 44048 || zipVal == 44082 || zipVal == 44003 || zipVal == 44093 || zipVal == 44076 || zipVal == 44062 || zipVal == 44021 || zipVal == 44046 || zipVal == 44099 || zipVal == 44032 || zipVal == 44047 || zipVal == 44010 || zipVal == 44057 || zipVal == 44086 || zipVal == 44064 || 44024 || 44023 || 44065 || 44022 || 44072 || 44040 || 44143 || 44094 || zipVal == 44139 || zipVal == 44146 || zipVal == 44128 || zipVal == 44105 || zipVal == 44122 || zipVal == 44124 || zipVal == 44121 || zipVal == 44117 || zipVal == 44108 || zipVal == 44110 || zipVal == 44103 || zipVal == 44106 || zipVal == 44118 || zipVal == 44120 || zipVal == 44104 || zipVal == 44114 || zipVal == 44127 || zipVal == 44125 || zipVal == 44131 || zipVal == 44134 || zipVal == 44129 || zipVal == 44130 || zipVal == 44144 || zipVal == 44109 || zipVal == 44115 || zipVal == 44136 || zipVal == 44133 || zipVal == 44147 || zipVal == 44141 || zipVal == 44067 || zipVal == 44056 || zipVal == 44087 || zipVal == 44195) {
zipAssign = 'AB';
} else {
zipAssign = '';
}
console.log(zipAssign);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="salesforce_submit" method="POST" enctype="multipart/form-data">
<div><input id="zip" placeholder="Zip/Postal Code*" class="input block" maxlength="6" name="zip" type="text" pattern= "[0-9]{5}"></div>
<input type="submit">
</form>
但我强烈建议创建一个邮政编码数组并将其与输入值循环进行比较。
希望对您有所帮助。谢谢。
很遗憾,您不能那样做。
这就是您要查找的内容:if (zipVal === 44030 || zipVal === 44048 || etc...)
但是,另一种选择是创建一个包含所有邮政编码的数组,然后使用 if (myArray.includes(zipVal))
检查您的情况
检查相等时,需要写==
或===
而不是=
:zipVal == 44030
.
当你想将同一个变量与多个值进行比较时,你仍然必须写出所有条件:zipVal == 44030 || zipVal == 44048 || (etc.)
但是请注意,这不是检查某个值是否在这么大的一组值中的好方法。相反,您应该将邮政编码收集在一个数组中:
var zipCodes = [ 44030, 44084, (etc.) ]
然后只需使用 .includes()
:
if (zipCodes.includes(zipVal)) {
zipAssign = 'AB';
}
我正在尝试检查邮政编码列表,然后根据输入的邮政编码是否与列表中的邮政编码匹配,为变量 zipAssign
分配一个值。
在代码当前状态下总是显示"AB"。
有没有人看出我做错了什么?
$('#salesforce_submit').change(function () {
//Find AB Zip Code
var zipVal = '';
var zipAssign = '';
zipVal = $('#zip').val();
if (zipVal = 44030 || 44048 || 44082 || 44003 || 44093 || 44076 || 44062 || 44021 || 44046 || 44099 || 44032 || 44047 || 44010 || 44057 || 44086 || 44064 || 44024 || 44023 || 44065 || 44022 || 44072 || 44040 || 44143 || 44094 || 44139 || 44146 || 44128 || 44105 || 44122 || 44124 || 44121 || 44117 || 44108 || 44110 || 44103 || 44106 || 44118 || 44120 || 44104 || 44114 || 44127 || 44125 || 44131 || 44134 || 44129 || 44130 || 44144 || 44109 || 44115 || 44136 || 44133 || 44147 || 44141 || 44067 || 44056 || 44087 || 44195) {
zipAssign = 'AB';
} else {
zipAssign = '';
}
console.log(zipAssign);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="salesforce_submit" method="POST" enctype="multipart/form-data">
<div><input id="zip" placeholder="Zip/Postal Code*" class="input block" maxlength="6" name="zip" type="text" pattern= "[0-9]{5}"></div>
<input type="submit">
</form>
In the codes current state it always displays "AB".
Does anyone see what I am doing wrong?
因为 zipVal = 44030 || 44048
总是 return 一个真值。
创建一个 zipVals
的数组并使用 includes
var zipVals = [ 44030 , 44048 , 44082 , 44003 , 44093 , 44076 , 44062 , 44021 , 44046 , 44099 , 44032 , 44047 , 44010 , 44057 , 44086 , 44064 , 44024 , 44023 , 44065 , 44022 , 44072 , 44040 , 44143 , 44094 , 44139 , 44146 , 44128 , 44105 , 44122 , 44124 , 44121 , 44117 , 44108 , 44110 , 44103 , 44106 , 44118 , 44120 , 44104 , 44114 , 44127 , 44125 , 44131 , 44134 , 44129 , 44130 , 44144 , 44109 , 44115 , 44136 , 44133 , 44147 , 44141 , 44067 , 44056 , 44087 , 44195 ];
if ( zipVals.includes( +zipVal ) ) { //convert zipVal to a number before using includes
zipAssign = 'AB';
} else {
zipAssign = '';
}
你只是犯了一个小错误,你没有比较 (==) 两个值,而是在 if 条件下将一个值赋值给另一个值 (=)。
在这里我重新创建了你的代码。
$('#salesforce_submit').change(function () {
//Find AB Zip Code
var zipVal = '';
var zipAssign = '';
zipVal = $('#zip').val();
if (zipVal == 44030 || zipVal == 44048 || zipVal == 44082 || zipVal == 44003 || zipVal == 44093 || zipVal == 44076 || zipVal == 44062 || zipVal == 44021 || zipVal == 44046 || zipVal == 44099 || zipVal == 44032 || zipVal == 44047 || zipVal == 44010 || zipVal == 44057 || zipVal == 44086 || zipVal == 44064 || 44024 || 44023 || 44065 || 44022 || 44072 || 44040 || 44143 || 44094 || zipVal == 44139 || zipVal == 44146 || zipVal == 44128 || zipVal == 44105 || zipVal == 44122 || zipVal == 44124 || zipVal == 44121 || zipVal == 44117 || zipVal == 44108 || zipVal == 44110 || zipVal == 44103 || zipVal == 44106 || zipVal == 44118 || zipVal == 44120 || zipVal == 44104 || zipVal == 44114 || zipVal == 44127 || zipVal == 44125 || zipVal == 44131 || zipVal == 44134 || zipVal == 44129 || zipVal == 44130 || zipVal == 44144 || zipVal == 44109 || zipVal == 44115 || zipVal == 44136 || zipVal == 44133 || zipVal == 44147 || zipVal == 44141 || zipVal == 44067 || zipVal == 44056 || zipVal == 44087 || zipVal == 44195) {
zipAssign = 'AB';
} else {
zipAssign = '';
}
console.log(zipAssign);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="salesforce_submit" method="POST" enctype="multipart/form-data">
<div><input id="zip" placeholder="Zip/Postal Code*" class="input block" maxlength="6" name="zip" type="text" pattern= "[0-9]{5}"></div>
<input type="submit">
</form>
但我强烈建议创建一个邮政编码数组并将其与输入值循环进行比较。
希望对您有所帮助。谢谢。
很遗憾,您不能那样做。
这就是您要查找的内容:if (zipVal === 44030 || zipVal === 44048 || etc...)
但是,另一种选择是创建一个包含所有邮政编码的数组,然后使用 if (myArray.includes(zipVal))
检查相等时,需要写
==
或===
而不是=
:zipVal == 44030
.当你想将同一个变量与多个值进行比较时,你仍然必须写出所有条件:
zipVal == 44030 || zipVal == 44048 || (etc.)
但是请注意,这不是检查某个值是否在这么大的一组值中的好方法。相反,您应该将邮政编码收集在一个数组中:
var zipCodes = [ 44030, 44084, (etc.) ]
然后只需使用 .includes()
:
if (zipCodes.includes(zipVal)) {
zipAssign = 'AB';
}