【发布时间】:2018-01-24 03:53:42
【问题描述】:
我正在尝试根据单击的按钮将 URL 参数值之一更改为 true 或 false。
在这里说我有一个网址
127.0.0.1:8080/cars/model?id=2003&styleAttrSaved=false©false=copy
我想根据我单击的按钮将值 styleAttrSaved 更改为 true 或 false 而不会影响任何其他参数,因此一旦我更改了值,url 将保持不变,仅更改该值。
这是我尝试做的。
$('.submitForm').click(function(){
var currentUrl = window.location.href;
var cleanUrl = currentUrl.substring(0,currentUrl.indexOf('&')
if($(this).attr('data-des') == true){
var savedUrl = "&styleAttrSaved=true";
} else {
var savedUrl = "&styleAttrSaved=false";
}
var finalUrl = cleanUrl+savedUrl;
history.pushState(null,null,finalUrl);
});
<button class="submitForm" data-des="true">Submit true</button>
<button class="submitForm" data-des="false">Submit false</button>
在代码中,我尝试使用子字符串方法替换值。我在这里面临的问题是,如果我使用这种方法,整个 URL 都会改变
例如,如果我有网址
127.0.0.1:8080/cars/model?id=2003&styleAttrSaved=false©false=copy
应用上述功能后,这是我返回的 URL
127.0.0.1:8080/cars/model?id=2003&styleAttrSaved=true
在上面的输出 url 中你可以看到 styleAttrSaved 的值发生了变化,但是其他参数值 copyfalse=copy 在新 url 的输出中不再可用。我不想从 URL 中删除其他参数,但我应该只更改 URL 中一个参数的值,以便 url 保持不变,并且像这样将 styleAttrSaved 的值更改为 true
127.0.0.1:8080/cars/model?id=2003&styleAttrSaved=true©false=copy
我该怎么做?
【问题讨论】:
-
在
cleanUrl = currentUrl.substring(0,currentUrl.indexOf('&')之后,cleanUrl以?id=2003结尾。然后你附加到它。你期待什么?
标签: javascript jquery url