2017-06-28 49 views
0

我想在循環中使用下拉菜單的選項值,但是我得到了未捕獲的錯誤,所有都未在filter1中定義。使用開關循環中的select元素的值(javascript)

function filter1() { 
    var x = document.getElementById("filter1").value; 
    switch(x) { 
     case all: 
     getElementsByClassName("1").style.display="none"; 
     break; 
    } 
    console.log(x); 
} 

HTML:

<select id="filter1" name="country" onchange="filter1()"> 
      <option value="all">All countries</option> 
</select> 
+1

'案 「所有」'注意引號。 – abhishekkannojia

+0

@abhishekkannojia我可以添加這個答案。我可以提你,如果你想 –

+0

@abhishekkannojia謝謝 –

回答

0

使用這種替代

function filter1() { 
    var x = document.getElementById("filter1").value; 
    switch(x) { 
     case "all": 
     getElementsByClassName("1").style.display="none"; 
     break; 
    } 
    console.log(x); 
} 
1

你缺少quotescase 'all'指定字符串。而添加一個選項大於僅執行更改功能

更改document.getElementsByClassName("1")[0]而不是getElementsByClassName("1")。因爲類名是多重選擇器

function filter1() { 
 
    var x = document.getElementById("filter1").value; 
 
    switch (x) { 
 
    case 'all': 
 
    console.log('work') 
 
     //document.getElementsByClassName("1")[0].style.display = "none"; 
 
     break; 
 
    } 
 
    console.log(x); 
 
}
<select id="filter1" name="country" onchange="filter1()"> 
 
      <option value="all">All countries</option> 
 
      <option value="one">All one</option> 
 
</select>

+0

謝謝先生,現在完美的作品。 –

+0

@SHCMostWanted歡迎您 – prasanth

0

簡短的回答:你忘了周圍的「所有」的報價。

這應該工作:

function filter1(value) { 
 
    switch(value) { 
 
     case 'all': 
 
     //getElementsByClassName("1").style.display="none"; 
 
     console.log('all selected'); 
 
     break; 
 
    } 
 
    console.log(value); 
 
}
<select id="filter1" name="country" onchange="filter1(this.value)"> 
 
    <option value="all">All countries</option> 
 
    <option value="us">US</option> 
 
</select>

0

可能是你應該使用下一個建設: function filter1(){ return document.getElementById("filter1").getAttributes("value").then(function(){ }) }

相關問題