2

私はスイッチケースルーチンでこのメニューを操作する方法を知っていますが、スイッチケースをオブジェクトリテラルに変更したいと思います。オブジェクトリテラルからリンク値を取得するonchange - Javascript/HTML select

パートAは、onchange値を取得してウィンドウを開く方法を知っています。パートBは、オブジェクトのname:valueペアで値を見つける方法を知っていますが、値に一致するようにハードコードされた名前が与えられている場合に限ります。パートAとパートBの機能を組み合わせなければなりません。パートAとパートBは互いに独立して動作するので、それらを組み合わせるのは簡単なことですが、私はそれを4日間行っています。

PART 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'としてハードコードされています。私は '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> 

答えて

1

動的にする必要があります。パートAの動作

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]); 
}); 
+0

は、パートBが動作します。私はそれらを一緒に働かせる必要があります。 – Lutherman

+0

更新された回答、2番目のコードスニペットをご覧ください。 –

+0

働いている場合は、答えとして受け入れてください。 thx –

関連する問題