0

私はクエリ文字列を操作するためにいくつかのjavascript(jqueryではなく単なるjavascript)を書いています。

私は現在次のものを持っています:

// no viewid in querystring so append as new
if (newUrl.indexOf("viewid") == -1) {
    newUrl += "?viewid=" + viewId;
}
else if (newUrl.indexOf("viewid") > -1) // there is a view id or another key e.g. there is a linkid
{
    newUrl = newUrl.replace(/viewid=\d*/i, "viewid=" + viewId);
}

したがって、viewidを新しいクエリ文字列キーとして追加します。それ以外の場合は追加します(&)。

私がする必要があるのは、クエリ文字列の値(たとえば、「blah」)がURLに含まれているかどうかを確認し、含まれている場合は、を追加すること&viewid=(number)です。

ドロップダウン(このjavascriptを呼び出す)の選択が変更された場合は、ビューIDを変更します(ただし、新しいものは追加しないでくださいviewid)。

4

2 に答える 2

0

window.location.searchクエリ文字列だけを取得するために使用できます。

次に、個々のペアsplit('&')の配列を取得するために使用できます。key=value

次に、各ペア (文字列) を適切なオブジェクトに分割できます。

次に、値を見つけてviewid変更し、クエリ文字列を再構築できます。

ここのサンプルコード ( http://jsfiddle.net/tMBpM/ ):

var locationHost = 'http://wwwdomain.com';
var locationPath = '/something';
var locationSearch = '?test=1&viewid=2';

var searches = locationSearch.replace('?', '').split('&');

for (var i in searches) {
    searches[i] = searches[i].split('=');
}

for (var j in searches) {
    if (searches[j][0] == 'viewid') {
        //we search for viewid
        console.log('old VIEWID =', searches[j][1]);
        //if we find one then we update it
        searches[j][1] = 5;
    }
}
locationSearch = "?";
for (var k in searches) {
    var separator = k == 0 ? "" : "&";
    locationSearch += separator + searches[k][0] + "=" + searches[k][1];
}

console.log(locationHost + locationPath + locationSearch);
//for production use window.location.host instead of locationHost
//and so on
于 2013-03-12T11:48:48.600 に答える