对你们来说这个问题真的很简单(对我来说不是那么简单)
我已经在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>
答案 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);