如何使用 JavaScript 更改当前 URL

How can I change current URL with JavaScript?

本文关键字:URL 何使用 JavaScript      更新时间:2023-09-26

>我有一个选择标签来选择要在当前表上显示的"行"数。

<%=select_tag :per_page, options_for_select([10,20,50,100]....some more code...., onchange => "if (this.value) {windows.location='?per_page='+(this.value);}' %>

这工作正常。但是,我还有一个搜索功能,可以更改当前页面的网址,即

www.url.com/blahblah&search="input"

如何在第一个"blah"之后插入一个字符串,并带有onchange事件?因为如果我在进行搜索后更改显示的行数,它会完全忽略搜索参数并再次显示每个结果。

你可以尝试使用这段代码。

$(document).ready(function() {
	//jquery
    $(location).attr('href');
	//pure javascript
	var pathname = window.location.pathname;
	
	// to show it in an alert window
    alert(window.location);
});

所以一开始你问的问题是什么意思,但我想我明白了。在更改该下拉选择时,您要将两个参数传递到 url 中。这意味着您必须检索当前 URL 的搜索值。您可以通过几种方式执行此操作。

首先,您可以在页面中的某处包含一个隐藏的输入,其中包含搜索参数的值,例如

<input type="hidden" value="[the search param value]" id="search_value"/> 

然后使用

document.getElementById("search_value").value;

您只需将其适当地附加到您正在构建的 url 中即可。

另一种方法是访问 location.search 属性,然后使用 RegExp 或 javascript 中的字符串操作方法解析您需要的值的 url。

var urlSearchParams = location.search.replace('?','').split('&');
var valueMap = {};
searchParams.forEach(function(a){
    var kv = a.split('=');
    valueMap[kv[0]] = kv[1];
});
//get the search value you want
var search = valueMap["search"];

第三种方法是检索参数并将其添加到您使用 rails 模板系统制作的 JS 代码模板中。