0

私はこのコードを持っています:

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');
});

このスクリプトが使用されているURLに応じて、異なる変数(mods1、modsN、...)を使用する必要があります。

URLは常に同じ構造になっています。

http://www.example.com/NUMBER/
http://www.example.com/NUMBER/example/
http://www.example.com/NUMBER/example/example

「数字」の部分は、ページを区別するために使用できる部分です。

サンプルコードを実行しているjsFiddle:http: //jsfiddle.net/RZHxz/

4

4 に答える 4

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()は値をパラメーターとして処理関数に渡すため、配列に再度移動する必要はありません。

フィドルの例

于 2012-10-31T15:58:23.657 に答える
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];
于 2012-10-31T15:53:20.127 に答える
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) {
    // ...
});
于 2012-10-31T15:55:50.657 に答える
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];

2番目は、URLに含まれていたnumber場合、または含まれていなかった場合に番号を返します

于 2012-10-31T16:02:09.907 に答える