从对象文字获取链接值,onchange - Javascript/HTML select
问题描述:
我知道如何使用开关盒例程来操作此菜单,但我想将开关盒更改为对象文字。部分A知道如何获取onchange值并打开一个窗口。 B部分知道如何在一个对象中的名称:值对中查找值,但只有在给定一个硬编码的名称以匹配值时才适用。我必须结合A部分和B部分的能力。由于A部分和B部分都是相互独立工作的,所以将它们结合起来应该是一件简单的事情,但我已经过了四天,而且我不知道如何。部分A:这个选择菜单的值属性中的硬编码链接被用作对象中名称的值替换。由于是,这打开的标签,因为它应该,但我想在B部分“林克”,从相应的对象称为链路的权值从对象文字获取链接值,onchange - Javascript/HTML select
<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>
PART B:这个脚本是从网上例子从对象中获取相应值的方法。它将正确的链接作为字符串粘贴到控制台中。正确答案在脚本的最后一行被硬编码为'gimme'。我必须用代码取代'gimme',代码从select选项值中获取onchange值,并查找对象中的相应链接。
<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>
答
这应该是动态的。
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]);
});
A部分的作品,B部分工作。我需要让他们一起工作。 – Lutherman
请参阅更新的答案,第二个代码片段。 –
如果工作,请接受它作为答案。 thx –