2

I am trying to grab a query string parameter and match it to an array that is getting dynamically generated.

Edit for clarity The url will be something like www.example.com?some=stuff&id=dynamicNumber

I'm outputting my array from liquid (shopify) which seems to be rendering properly when I view the source.

My failing point seems to be setting the actual variable "soldOut", because if I put one of the actual values that I know will be in the array, it returns true.

Fiddle with a static array and functional matching: http://jsfiddle.net/zHuDU/5/

I'm just missing the querystring function because I wasn't sure how to do that with JSfiddle

Here is my code:

<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>
6
  • So it doesn't return false when not in the array? because the fiddle works just fine. Can you show us some examples of GetQueryStringParams('id')? Commented Dec 9, 2013 at 14:26
  • Yes, the fiddle works, but when I try all the code together, it looks like GetQueryStringParams('id') isn't actually pulling the relevant info from the query string. That's what I was trying to say. I got it from here: css-tricks.com/snippets/javascript/get-url-variables Commented Dec 9, 2013 at 14:28
  • yea if i had to guess there is something wrong with the querystring parsing. yours doesn't look bad but i would use a proven lib for this rather than debug it stackoverflow.com/questions/3788125/jquery-querystring Commented Dec 9, 2013 at 14:30
  • I've tried a number of them, but I will give your link a shot. I can't help but feel I'm just doing something wrong with my syntax to create the variable. Commented Dec 9, 2013 at 14:31
  • Try console.log(soldOut) and console.log(window === top). Commented Dec 9, 2013 at 14:31

1 Answer 1

3

soldOut is string, but the values in your array are integer. Cast soldOut to an int:

soldOut = +GetQueryStringParams('id');
Sign up to request clarification or add additional context in comments.

1 Comment

Brilliant! I think this did it! I will upvote right after I test it fully!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.