Два окна. Расположение не работает вместе - PullRequest
1 голос
/ 19 марта 2020

У меня есть две функции, которые устанавливают тег window.location.href в URL, но когда я устанавливаю первый, а затем выбираю другой, первый исчезает. Так как мне быть? Эти функции находятся в форме, которая делает выбор из 1. имени проекта и 2. пакета. И затем вы отправляете форму (php) полей, добавляемых в базу данных.

function jsFunction(){
    var myselect = document.getElementById("projektnamn");
    window.location.href = "?projektnamn=" + myselect.options[myselect.selectedIndex].value;
}

function services(){
    var select = document.getElementById("paket");
    window.location.href = "?paket=" + select.options[select.selectedIndex].value;
}

Я хочу, чтобы результат был таким:

domain.com?projektnamn=Something?paket=Something

То, что я получаю сегодня, это :

domain.com?projektnamn=Something

Или я получаю:

domain.com?paket=Something

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

Обе ваши функции сбрасывают URL.

Что вы можете сделать, это использовать URLSearchParams для генерации строки запроса.

function jsFunction(params) {
    var myselect = document.getElementById("projektnamn");
    params.set('projektnamn', myselect.options[myselect.selectedIndex].value);
}

function jsFunction2(params) {
    var select = document.getElementById("paket");
    params.set('paket', select.options[select.selectedIndex].value);
}

const params = new URLSearchParams();
jsFunction(params);
jsFunction2(params);
window.location.href = `${location.pathname}?${params}`;

Из того, что вы пытаетесь сделать построить одну функцию, а не две отдельные функции. Я бы заменил эти 2 функции на один универсальный c.

function jsFunction(params, id, name) {
    var myselect = document.getElementById(id);
    params.set(name, myselect.options[myselect.selectedIndex].value);
}

const params = new URLSearchParams();
jsFunction(params, "projektnamn", 'projektnamn');
jsFunction(params, "paket", 'paket');
window.location.href = `${location.pathname}?${params}`;
0 голосов
/ 19 марта 2020

Я бы сохранил ссылку в переменной

let query = "";
function jsFunction(){
  var myselect = document.getElementById("projektnamn");
  query += "?projektnamn=" + myselect.options[myselect.selectedIndex].value;
}

function services(){
  var select = document.getElementById("paket");
  query += "?paket=" + select.options[select.selectedIndex].value;
  window.location.assign(query);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...