2016-07-28 21 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'会做这个工作! –