2013-12-09 48 views
2

我正在嘗試抓取查詢字符串參數並將其與動態生成的數組進行匹配。從查詢字符串獲取變量,將其與Javascript中的數組匹配

編輯爲清楚起見的網址會像www.example.com?some=stuff & ID = dynamicNumber

我輸出從液體(shopify)我的數組,這似乎是正確的渲染時我查看來源。

我的失敗點似乎是設置實際變量「soldOut」,因爲如果我將我知道的實際值之一放在數組中,它將返回true。

撥弄靜態數組和功能配套:http://jsfiddle.net/zHuDU/5/

我只是缺少查詢字符串函數,因爲我不知道怎麼做,用的jsfiddle

這裏是我的代碼:

<script> 
    var testArray = [ 
    // shopify liquid to generate values 
{% for variant in product.variants %} 
{% if variant.inventory_quantity == 0 %} 
{{ variant.id }}, 
{% else %} 
{% endif %} 
{% endfor %} 
    ]; 

function GetQueryStringParams(sParam) 
{ 
    var sPageURL = window.location.search.substring(1); 
    var sURLVariables = sPageURL.split('&'); 
    for (var i = 0; i < sURLVariables.length; i++) 
    { 
     var sParameterName = sURLVariables[i].split('='); 
     if (sParameterName[0] == sParam) 
     { 
      return sParameterName[1]; 
     } 
    } 
} 

var soldOut = GetQueryStringParams('id'); 


    if(jQuery.inArray(soldOut, testArray)!==-1) { 
     console.log("The ID was in the test array (out of stock)"); 
    } 
    else{ 
     console.log("The ID wasn't in the test array (so it's in stock or I messed up)"); 
    } 
</script> 
+0

因此,當它不在數組中時不會返回false?因爲小提琴工作得很好。你可以向我們展示一些'GetQueryStringParams('id')'的例子嗎? – Spokey

+0

是的,小提琴可以工作,但是當我將所有代碼放在一起時,看起來像GetQueryStringParams('id')實際上並沒有從查詢字符串中拉出相關信息。這就是我想說的。我從這裏得到它:http://css-tricks.com/snippets/javascript/get-url-variables/ – Patrick

+0

是啊,如果我不得不猜測查詢字符串解析有什麼問題。你的看起來不壞,但我會使用一個經過驗證的庫,而不是調試它http://stackoverflow.com/questions/3788125/jquery-querystring – jm0

回答

2

soldOut是字符串,但數組中的值是整數。將soldOut轉換爲int:

soldOut = +GetQueryStringParams('id'); 
+0

是的,可能是這個。它使用!==畢竟 – jm0

+0

輝煌!我認爲這是做到了!在我完全測試之後,我會立即開始行動! – Patrick

相關問題