Получить значение ссылки из литерала объекта, 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]);
});