Получить значение ссылки из литерала объекта, onchange- выбор Javascript/HTML

Я знаю, как управлять этим меню с помощью процедуры регистра переключателя, но я хочу изменить регистр переключателя на литерал объекта.

Часть A знает, как получить значение onchange и открыть окно. Часть B знает, как найти значение в паре имя: значение в объекте, но только если ей дано жестко запрограммированное имя для сопоставления со значением. Я должен объединить возможности части A и части B. Поскольку часть A и часть B работают независимо друг от друга, объединить их должно быть несложно, но я занимался этим четыре дня и не знаю как.

ЧАСТЬ A: В этом меню выбора жестко закодированные ссылки в атрибутах значений были заменены значениями, которые используются в качестве имен в объекте. Таким образом, это открывает вкладки, как и должно быть, но я хочу получить правильное соответствующее значение ссылки из объекта с именем "lynk" в части B.

<select id="sed">
    <option value="" selected>Select:</option>
    <option value="prev" >PREV</option>
    <option value="next">NEXT</option>
    <option value="home">home</option>
    <option value="gimme">contribute</option>
</select>

<script>
document.getElementById('sed').addEventListener ('change', valuu);

function valuu() {
ddd = document.getElementById("sed").value;
window.open(ddd, '_self');
}
</script>

ЧАСТЬ B: Этот скрипт взят из онлайн-примера способа получения соответствующего значения от объекта. Возвращает правильную ссылку в виде строки, если она вставлена ​​в консоль. Правильный ответ жестко закодирован как "дай" в последней строке сценария. Я должен заменить 'gimme' кодом, который получает значение onchange из значений параметра select и ищет соответствующую ссылку в объекте.

<script>
/*Works when pasted into console*/
function foo(bar) {
  var lynk = {
    'default': (''),
    'next': ('nextly.html'),
    'prev': ('previous.html'),
    'gimme': ('http://patreonx.com/bxaxly'),
    'home': ('index.html')
  };
  return lynk[bar];
}
foo('gimme');
</script>

1 ответ

Решение

Это должно сделать его динамичным.

function valuu() {
   ddd = document.getElementById("sed").value;
   window.open(foo(ddd), '_self');
}

Вы можете сделать все это в одной функции, например,

document.getElementById('sed').addEventListener ('change', function(e){
   var lynk = {
    'default': (''),
    'next': ('nextly.html'),
    'prev': ('previous.html'),
    'gimme': ('http://patreon.com/bearly'),
    'home': ('index.html')
   };
   window.open(lynk[e.target.value]);
});
Другие вопросы по тегам