使用JavaScript

时间:2016-10-07 17:04:48

标签: javascript clean-urls

我最近改变了我的网站使用干净/搜索引擎优化的网址,这已经引起了我用于获取查询字符串参数的JavaScript函数的一些问题。

以前我一直在使用这个功能:

function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
        return pair[1];
    }
}
return (false);
}

this之类的内容上工作正常,因为您可以调用getQueryVariable("image")并返回&#34; awesome.jpg&#34;。

我一直在使用indexOf();功能试图从当前网址中获取相关参数,例如:

var url = window.location.pathname;
var isPage = url.indexOf("page") + 1;

试图获取&#34;页面的数组索引编号&#34;参数,然后再加1,它将移动到(?page=name > /page/name/)

的值

JavaScript不是我的主要语言,因此我不习惯使用数组等,而我尝试将其转换为新功能一直令我感到头痛。

任何指针?

2 个答案:

答案 0 :(得分:2)

这样的事情怎么样?它会分割路径并在确定键/值对时不断移出数组的第一个元素。

&#13;
&#13;
function getPathVariable(variable) {
  var path = location.pathname;

  // just for the demo, lets pretend the path is this...
  path = '/images/awesome.jpg/page/about';
  // ^-- take this line out for your own version.

  var parts = path.substr(1).split('/'), value;

  while(parts.length) {
    if (parts.shift() === variable) value = parts.shift();
    else parts.shift();
  }

  return value;
}

console.log(getPathVariable('page'));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这可以使用像this之类的库正式完成,但我会选择简单的字符串操作:

const parts = '/users/bob'.split('/')
const name = parts[parts.length - 1] // 'bob'