2016-07-28 32 views
0

我有一個下拉列表,當點擊的項目之一,我調用這個函數:不能通過字符串變量函數

onClick(type) { 
    type.preventDefault(); 
    let query = type.target.text; 
    PokeApi.pokemonType(query).then(function(data) { 
     console.log(data); 
    }.bind(this)); 
    } 

的執行console.log返回undefined。

當我這樣做:

onClick(type) { 
    type.preventDefault(); 
    let query = type.target.text; 
    console.log(query); 
    console.log(typeof query); 
    PokeApi.pokemonType(query).then(function(data) { 
     console.log(data); 
    }.bind(this)); 
    } 

第一的console.log將返回下拉列表項目的文本。第二個console.log將返回字符串。現在,當我將查詢傳遞給PokeApi.pokemonType時,我可以從api中獲取404錯誤,第三個console.log返回undefined。

但是,如果我通過在下拉列表的文本直接像這樣:

onClick(type) { 
    type.preventDefault(); 
    PokeApi.pokemonType("ice").then(function(data) { 
     console.log(data); 
    }.bind(this)); 
    } 

一切工作完全正常,我也得到正確的對象從API回來。

任何想法爲什麼發生這種情況?我究竟做錯了什麼?

+0

看看網絡面板,然後查看該請求。看看當你使用硬編碼時發送了什麼。文本 – epascarello

+0

嘗試使用'onChange'來代替,並得到你可以使用的選擇值:'query = type.target.value'! –

+0

好吧,如此硬編碼,請求網址是http://pokeapi.co/api/v2/type/ice並且查詢它的http://pokeapi.co/api/v2/type/%20ice%20/ – Banner

回答

0

你必須得到下拉列表中選擇元素的值

var sel = document.getElementById('myDropdown'), 
var selectedText = sel.options[sel.selectedIndex].value; 
+1

我覺得'self.value'會做這個工作! –