我有这段代码:
var mods1 = ['a', 'b', 'c', 'd'];
var mods2 = ['1', '2', '3', '4'];
var mods3 = ['js', 'hates', 'me', ':('];
jQuery('div').append('<ul class="modlist"></ul>');
jQuery.each(mods1, function(i) {
jQuery('<li/>').html(mods1[i]).appendTo('.modlist');
});
我需要使用不同的变量(mods1,modsN,...),具体取决于使用此脚本的URL。
网址始终具有相同的结构:
http://www.example.com/NUMBER/
http://www.example.com/NUMBER/example/
http://www.example.com/NUMBER/example/example
“数字”部分是我可以用来区分页面的部分。
js使用我的示例代码运行:http://jsfiddle.net/RZHxz/
答案 0 :(得分:2)
只需解析window.location
:
var url = location.pathname.substr(1),
arr_url = url.split('/'),
NUM = arr_url[0];
或者,如果您希望您的代码更紧凑:
var NUM = location.pathname.substr(1).split('/')[0];
答案 1 :(得分:2)
试试这个:
var url = "/1/example"; // location.pathname
var id = url.split("/")[1];
mods = [
['a', 'b', 'c', 'd'],
['1', '2', '3', '4'],
['js', 'hates', 'me', ':(']
];
jQuery('div').append('<ul class="modlist"></ul>');
jQuery.each(mods[id], function(i,v) {
jQuery('<li/>').html(v).appendTo('.modlist');
});
我已将mods
变成数组,因为无论如何你都是有效地访问它们的,each()
函数将值作为参数传递给处理函数,所以你不要不需要再次去阵列了。
答案 2 :(得分:1)
假设所有 mods 变量都在公共mods
对象中,默认情况下使用mods1
:
var mods = {
mods1: ['a', 'b', 'c', 'd'],
mods2: ['1', '2', '3', '4'],
mods3: ['js', 'hates', 'me', ':(']
};
var key = "mods" + (/^\/(\d+)/.exec(location.pathname) || [,1])[1];
$.each(mods[key], function(i) {
// ...
});
答案 3 :(得分:1)
如果你确定这个数字会在那里,你可以很容易地得到它:
var urlNumber = parseInt(location.pathname.substr(1),10); // always use a radix
//or, if the number needn't be there
var urlNumber = (location.pathname.match(/^\/([0-9]+)\//) || ['no','number'])[1];
第二个返回数字,如果它在网址中,或number
,如果它不是