2009-10-14 122 views
0

基本上我黑客一個foxycart設置我運行,我需要基本上隱藏某些運輸選項應該在頁面上的幾件事情...在javascript和jquery中我的IF語句出了什麼問題?

1)that $ value!= United States(this is pulling dynamic從文本輸入,但爲顯示你的目的,我做了它在這裏一個靜態變量
2)「.fc_cart_item」發生時,只有一次
3)在「.fc_cart_item_quantity」文本只有1
和數量
4)#fc_cart_table中的文本包含Xyz或Zyx

這裏我我的發言是有點兒工程...

var value = 'Australia'; 

if( 
    ( $value != 'United States' && $('.fc_cart_item').size() < 2 && $('.fc_cart_item_quantity').text() < 2 ) &&  
    ( $('#fc_cart_table:contains(\'Zyx\')') || $('#fc_cart_table:contains(\'Xyz\')') )  
) 

    { 

     // do stuff 

    } 

現在,這是工作(無論我把//做會發生的東西),因爲我希望,當我在車有XYZ,或是ZYX ...但隨後即使它是Xyz或Zyx之外的東西,它仍然在做着什麼。

我來自PHP背景,所以我不知道我是否在這裏正確地執行if語句。

回答

1

您示例中的if語句將始終返回true,因爲:contains選擇器不會返回可安全用於if語句的布爾值。試試這個:

value = "Australia"; 

if((value != "United States" && $(".fc_cart_item").size() < 2 && 
    $(".fc_cart_item_quantity").text() < 2 ) && 
    ($("#fc_cart_table").is(":contains('Zyx')") || 
    $("#fc_cart_table").is(":contains('Xyz')") ) 
{ 

    // do stuff 
} 

順便說一句,你可以告訴你從PHP的背景,你的$ value語法是... :)

+0

爲zdawg歡呼 – willdanceforfun 2009-10-15 07:20:45

1

它的「做的東西」,當這些條件都滿足:


$value != 'United States' && $('.fc_cart_item').size() < 2 && $('.fc_cart_item_quantity').text() < 2 ) 

即使在車中沒有ZYX或者XYZ。

1

嘗試以下。請注意,變量不會被$value訪問,而會被value訪問。你也不應該檢查$('#fc_cart_table:contains(\'Zyx\')') - 結果是一個布爾值爲true的空數組。而是請使用$('#fc_cart_table:contains(\'Zyx\')').size()或以下使用:

var value = 'Australia'; 

if( 
    ( value != 'United States' && $('.fc_cart_item').size() < 2 && parseInt($('.fc_cart_item_quantity').text()) < 2 ) &&  
    ( $('#fc_cart_table').text().indexOf('Zyx') > -1 || $('#fc_cart_table').text().indexOf('Xyz') > -1 )  
) 
{ 
    // do stuff 
} 

/編輯:我還添加了parseInt()聲明只是爲了正確使用類型的緣故。

+0

感謝MrMage。我選擇了zdawgs,因爲它代碼少。你的工作也! – willdanceforfun 2009-10-17 07:32:36

1

value之前刪除$。並把parseInt()大約$('.fc_cart_item_quantity').text()

+1

這是不夠的,正如其他答案中所述。 – MrMage 2009-10-14 11:47:28