1

私の問題は、URL から特定のものを抽出しようとしていることです。私は現在使用しています

window.location.href.substr()

「/localhost:123/list/chart=2/view=1」のようなものをつかむ

私が今持っているのは、インデックスの配置を使用してチャートを取得し、値を表示することです。

var chart = window.location.href.substr(-8);
var view = window.location.href.substr(-1);

しかし、問題は、10 個以上のチャートがある場合に発生します。ポジショニングがめちゃくちゃ。コードに "chart=" と最も近い "/" の間の文字列を取得するように要求する方法はありますか?

4

3 に答える 3

3
var str = "/localhost:123/list/chart=2/view=1";
var data = str.match(/\/chart=([0-9]+)\/view=([0-9]+)/);
var chart = data[1];
var view = data[2];

もちろん、一致の結果を使用する前に、いくつかの検証チェックを追加することもできます。

Paul Sに触発されました。私は自分の答えの関数バージョンを書きました:

function getPathVal(name)
{
    var path = window.location.pathname;
    var regx = new RegExp('(?:/|&|\\?)'+name+'='+'([^/&,]+)');
    var data = path.match(regx);
    return data[1] || null;
}
getPathVal('chart');//2

関数は、URI の標準の get パラメータ構文、またはサンプル URI の構文からパラメータをフェッチするために機能する必要があります。

于 2013-07-23T13:59:06.830 に答える
1

区切り文字として「/」を使用して文字列を分割し、結果の配列をループして目的のパラメーターを見つけることができます。そうすれば、すべてのパラメーターを自動的に簡単に抽出できます。

var x =  "/localhost:123/list/chart=2/view=1";

var res = {};
var spl = x.split("/");
for (var i = 0; i < spl.length; i++) {
    var part = spl[i];
    var index = part.indexOf("=");
    if (index > 0) {
        res[part.substring(0, index)] = part.substring(index + 1);
    }
}

console.log(res);
// res = { chart: 2, view: 1}

フィドル

于 2013-07-23T14:11:47.610 に答える