2009-11-08 5 views
0

Я проверяю несколько ссылок «читать больше» в своем блоге и скрываю ссылку (для первых двух сообщений) или скрываю содержимое и сохраняя ссылку , Я бег id атрибутов ссылок через if ... else заявления, которое выглядит примерно так:Javascript 'if' conditional not ... condition

$(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. Я пробовал == и ===, между прочим, и я не могу понять, что не так.

Любые предложения?

ответ

12

Я уверен, вы не можете сделать if (pt == "postnum1" || "postnum2") в javascript. Попробуйте if (pt == "postnum1" || pt == "postnum2"). В принципе, даже если первое условие pt == "postnum1" было ложным, оно относилось бы ко второму условному условию как истинному, что позволило бы избежать предложения else внизу. По крайней мере, это то, что я думаю.

Извините, если я неправильно понял ваш вопрос.

+0

Так оно и было. Спасибо за быстрый ответ! –

2

Вторая часть условия «postnum2» всегда имеет значение true. Вам нужно преобразовать условие в первый ответ. Также ваше сообщение говорит post_num_1, post_num_2 и т. Д., Но вы проверяете post_num1.

3

JavaScript не является строго типизированным, это означает, в частности, что он дает вам некоторую свободу действий в ваших типах данных и всегда пытается принудить значение выражения к типу данных, который, по его мнению, является вашим намерением.

В вашем выражении if он пытается преобразовать часть после || boolean и результат преобразования «postnum2» всегда верен.

Я думаю, что вы хотели было (pt == "postnum1" || pt == "postnum2")

2

Вместо если (pt == "postnum1" || "postnum2")

попробовать

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

Также вы можете сделать что-то в случае переключателя (в качестве альтернативы)

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