2017-10-08 4 views
0

"latte"を選択したときに、latte flavorドロップダウンメニューを表示しようとしていますが、表示されません。remove&set属性を使用して非表示のドロップダウンメニューを作成する

私は、私は以下のだと思うか提案

https://jsfiddle.net/1ce4xm4h/8/

var $ = function(id) { 
return document.getElementById(id); 
}; 

function init() { 
var allSelect = document.getElementsByTagName("select"); 
// onchange event for all selects coffeeType, coffeeSize, latteType 
for (var i = 0; i < allSelect.length; i++) 
{ 
allSelect[i].onchange = showLatte(); // calls function 

} 
} 

var coffee = $("coffeeType").value; 

function showLatte() { 
switch(coffee) { 
case "Latte": 
if (latteFlavors.hasAttribute("class")) { 
latteFlavors.removeAttribute("class"); 
} else { 
latteFlavors.setAttribute("class", "showLatteFlavors"); 
} 
} 
}; 
<select name="coffeeType" id="coffeeType"> 
<option value="#">Select Coffee</option> 
<option value="Hazelnut">Hazelnut</option> 
<option value="Decaf">Decaf</option> 
<option value="Reg">Regular</option> 
<option value="Americano">Americano</option> 
<option value="Latte">Latte</option> 
</select> 

<select name="latteFlavors" id="latteFlavors"> 
<option value="#">Select Latte</option> 
<option value="mocha">Mocha</option> 
<option value="chai">Chai</option> 
<option value="pumpkin">Pumpkin</option> 
<option value="macchiato">Macchiato</option> 
</select> 
+1

あなたはカスタムのJavaScript対のjQueryの不一致を持っているように見えます。 'var $ = function(id)'は非常に珍しいコードです。 jQueryを使用しようとしていますか?もしそうなら、あなたはそれを上書きします。そうでない場合、 '$(" coffeeType ")'は有効なセレクタではありません。 –

+0

私はjavaScriptを初めて使用しています。私はこれがjavascriptだと思った。 var $ = function(id){ return document.getElementById(id); }; –

+0

'showLatte(); // calls function' - uh ... – melpomene

答えて

0

をいただければ幸いですが、あなたが達成しようとしているものを実現しています。私は可能な限りコードを簡素化しようとしました。

EDIT:

//gloabals will be set in init 
 
var coffeeType = null; 
 
var latteFlavors = null; 
 
init(); 
 

 
function showLatte(coffeeType) { 
 
    if (coffeeType === "Latte") { 
 
    latteFlavors.style.display = 'inline'; 
 
    } else { 
 
    latteFlavors.style.display = 'none'; 
 
    } 
 
} 
 

 
function init() { 
 
    coffeeType = document.getElementById('coffeeType'); 
 
    latteFlavors = document.getElementById('latteFlavors'); 
 
    latteFlavors.style.display = 'none'; 
 
    coffeeType.addEventListener('change', function() { 
 
    showLatte(coffeeType.value); 
 
    }); 
 
}
<select name="coffeeType" id="coffeeType"> 
 
    <option value="#">Select Coffee</option> 
 
    <option value="Hazelnut">Hazelnut</option> 
 
    <option value="Decaf">Decaf</option> 
 
    <option value="Reg">Regular</option> 
 
    <option value="Americano">Americano</option> 
 
    <option value="Latte">Latte</option> 
 
</select> 
 

 
<select name="latteFlavors" id="latteFlavors"> 
 
    <option value="#">Select Latte</option> 
 
    <option value="mocha">Mocha</option> 
 
    <option value="chai">Chai</option> 
 
    <option value="pumpkin">Pumpkin</option> 
 
    <option value="macchiato">Macchiato</option> 
 
</select>

+0

応答ありがとうTommy O. 最初のドロップダウンメニューで "latte"を選択するまで、 "Select Latte"メニューを隠しておきます。 –

+0

@ user3006792あなたが探していたことを理解して以来、私は自分の答えを更新しました。あなたのソリューションはうまくいきますが、私のコードはやや簡単かもしれないと思いますので、このようにすることをお勧めします。 – tommyO

+0

@ user3006792また、コードを更新して、ボタンクリックではなく選択変更イベントでファンクションを起動するようにしました。 – tommyO

0

は、私はそれを考え出した:

CSS:

#latteFlavors.showLatteFlavors { 
display: block; 
} 

#latteFlavors { 
display: none; 
} 

HTML:

<select name="coffeeType" id="coffeeType"> 
<option value="#">Select Coffee</option> 
<option value="Hazelnut">Hazelnut</option> 
<option value="Decaf">Decaf</option> 
<option value="Reg">Regular</option> 
<option value="Americano">Americano</option> 
<option value="Latte">Latte</option> 
</select> 
<br> 
<br> 
<select name="latteFlavors" id="latteFlavors"> 
<option value="#">Select Latte</option> 
<option value="mocha">Mocha</option> 
<option value="chai">Chai</option> 
<option value="pumpkin">Pumpkin</option> 
<option value="macchiato">Macchiato</option> 
</select> 

JS:

var $ = function(id) { 
return document.getElementById(id); 
}; 


function init() { 
var allSelect = document.getElementsByTagName("select"); 
// onchange event for all selects coffeeType, coffeeSize, latteType 
for (var i = 0; i < allSelect.length; i++) 
{ 
allSelect[i].onchange = showLatte; // calls function 
} 
} 

var coffee = $("coffeeType").value; 
// displays latte type dropdown menu if latte is selected 

var showLatte = function() { 
var latteFlavors = $("latteFlavors"); 
var coffee = $("coffeeType").value; 

if (coffee == "Latte") { 
     latteFlavors.setAttribute("class", "showLatteFlavors"); 
} else { 
     latteFlavors.removeAttribute("class"); 
} 
}; 

window.onload = function() { 
init(); // calls function 

}

https://jsfiddle.net/1ce4xm4h/15/

関連する問題