Java脚本||或运算符条件不起作用



在下面的脚本中,我添加了or运算符来检查条件,比如如果是"ALL TCP"或"ALL UDP"项,则必须禁用,请建议我修改代码。

<script type="text/javascript">
function chgJob(pThis, pRow)
{
if ((pThis.value != 'All TCP') || (pThis.value != 'All UDP'))
{
$x_disableItem('f02_' + pRow, false);
}
else
{
$x_disableItem('f02_' + pRow, true);
}
}
</script>

字符串永远不可能同时等于'All TCP''All UDP',因此条件始终为true。

您希望使用&&运算符而不是||运算符:

if ((pThis.value != 'All TCP') && (pThis.value != 'All UDP'))

编辑:

正如Cerbrus所指出的,您根本不需要if语句,您可以通过反转它来直接使用布尔表达式(x==y || x==z!(x!=y && x!=z)相同):

<script type="text/javascript">
function chgJob(pThis, pRow) {
$x_disableItem('f02_' + pRow, pThis.value == 'All TCP' || pThis.value == 'All UDP');
}
</script>

试试这个:

if ((pThis.value != 'All TCP') && (pThis.value != 'All UDP'))

或:

function chgJob(pThis, pRow)
{
if ((pThis.value == 'All TCP') || (pThis.value == 'All UDP'))
{
$x_disableItem('f02_' + pRow, true);
}
else
{
$x_disableItem('f02_' + pRow, false);
}
}

如前所述,在您的if-else中,您需要&&运算符,而不是||,但是:

您也可以通过以下操作完全删除if

function chgJob(pThis, pRow) {
$x_disableItem('f02_' + pRow, (pThis.value == 'All TCP' || pThis.value == 'All UDP'));
}

如果pThis.value"ALL TCP""ALL UDP",则该项目将被禁用。

最新更新