Javascript'if'有条件不...条件

时间:2009-11-08 02:40:20

标签: javascript conditional

我正在检查我博客上的一些“阅读更多”链接,并隐藏链接(前两个帖子),或隐藏内容并保留链接。我通过id语句运行链接'if ... else属性,如下所示:

$(document).find('.contentclicker').each(function(){
    var pt = $(this).parent().attr('id');
    if (pt == "postnum1" ||  "postnum2"){
        $(this).hide();
    }
    else{
        $(this).next().hide();
    }

    });

注意:那里有一些jQuery,但它并不相关。我从调试中知道var pt正确设置为post_num_1,post_num_2等等 - 但是当它评估post_num_3等等时,它不会转到else。我已尝试=====等等,我无法弄清楚出了什么问题。

有什么建议吗?

4 个答案:

答案 0 :(得分:12)

我很确定你不能在javascript中if (pt == "postnum1" || "postnum2")。试试if (pt == "postnum1" || pt == "postnum2")。基本上,即使pt == "postnum1"的第一个条件为假,它也会将第二个条件视为真,这将避免底部的else子句。至少,这就是我的想法。

很抱歉,如果我误解了你的问题。

答案 1 :(得分:3)

JavaScript不是严格类型的,它特别意味着它为您的数据类型提供了一些余地,并且总是试图将表达式值强制转换为它认为是您的意图的数据类型。

在你的if语句中,它尝试在||之后转换部分对于布尔值和“postnum2”的转换结果总是如此。

我认为你的意图是(pt == "postnum1" || pt == "postnum2")

答案 2 :(得分:2)

条件“postnum2”的第二部分总是评估为真。你必须将条件转换为第一个答案。你的帖子也说post_num_1,post_num_2等,但是你要检查post_num1。

答案 3 :(得分:2)

而不是(pt == "postnum1" || "postnum2")

if ((pt == "postnum1" ) || (pt == "postnum2"))
{
  // something
}

你也可以在开关盒中做一些事情(作为替代方案)

switch(pt)
{
 case "postnum1":
 case "postnum2" : $(this).hide(); break;
 default: $(this).next().hide(); break;
}