JQuery在url中获取字符串后的数字

时间:2014-02-25 03:47:51

标签: javascript jquery html

对你们来说这个问题真的很简单(对我来说不是那么简单)

我已经在StackOverflow上放了一个基于其他线程的脚本,但我有独特的需求。我的网站上有一个表单,用户将提交它,然后它会在网址中添加“?updated = 555”之类的内容。但是,这个数字会根据他们更新的内容而改变。

我需要一种方法来搜索数字(在我的示例中为555),这样我就可以在提交表单和页面重新加载时回滚到该div。每个div都有一个唯一的ID,其中的数字将在提交URL时与该查询字符串匹配。所以我需要的是一种方法来找出“?updated =”之后的数字是什么,所以我可以把它传递给这个

scrollTop: $("#my-number").offset().top

这是我到目前为止所做的:

<script>
jQuery(document).ready(function($) {
    if(window.location.href.indexOf("?updated=") > -1) {
       $('html, body').animate({
            scrollTop: $("#my-number").offset().top
        }, 2000);
    }
});
</script>

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式从您的网址获取最后一个数字:

var lastNumber = window.location.href.match(/\d+$/);

然后使用:

scrollTop: lastNumber

答案 1 :(得分:1)

请参阅:https://stackoverflow.com/a/14663371/183181

function URLParameters(_querystring){
    var queryString = _querystring || window.location.search || '';
    var keyValPairs = [];
    var params      = {};

    queryString = queryString.replace(/^[^?]*\?/,''); // only get search path

    if (queryString.length)
    {
       keyValPairs = queryString.split('&');
       for (pairNum in keyValPairs)
       {
          if (! (!isNaN(parseFloat(pairNum)) && isFinite(pairNum)) ) continue;
          var key = keyValPairs[pairNum].split('=')[0];
          if (!key.length) continue;
          if (typeof params[key] === 'undefined')
             params[key] = [];
          params[key].push(keyValPairs[pairNum].split('=')[1]);
       }
    }
    return params;
}


var params = URLParameters();
params.updated; //[555]

因此,如果您知道它只有一个值,则params.updated[0]params.updated.shift()应该等于555

答案 2 :(得分:0)

而不是那样,使用书签怎么样?

http://stackoverflow.com/url#updated555

<a id="updated555"></a>

...否则

var queries = location.query.split('&');
for(var i=0; i<queries.length; i++)
   if(queries[i].substr(0,8)==='updated=')
       $('html, body').animate({
         scrollTop: $("#"+queries[i].substr(8)).offset().top
       }, 2000);

...你仍然可以使用书签,因为这是他们的目的......

var query = location.hash;
if(query.substr(0,7)==='updated')
   $('html, body').animate({
     scrollTop: $("#"+query[i].substr(7)).offset().top
   }, 2000);