Javascript ||或操作员条件不起作用

时间:2012-12-04 07:25:16

标签: javascript

在下面的脚本中,我添加了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>

3 个答案:

答案 0 :(得分:4)

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

您想使用&&运算符代替||运算符:

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>

答案 1 :(得分:0)

试试这个:

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);
    }
}

答案 2 :(得分:0)

就像已经说过的那样,在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",则该项目将被停用。