【问题标题】:Can't pass string variable to function无法将字符串变量传递给函数
【发布时间】:2016-12-03 04:33:22
【问题描述】:

我有一个下拉菜单,当其中一个项目被点击时,我调用这个函数:

  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 得到正确的对象。

知道为什么会这样吗?我做错了什么?

【问题讨论】:

  • 查看网络面板,查看请求。查看硬编码时发送的内容与使用 .text 时发送的内容
  • 尝试改用onChange,并获得可以使用的选定值:query = type.target.value
  • 好吧,这么硬编码,请求 url 是 pokeapi.co/api/v2/type/ice 并查询它的 pokeapi.co/api/v2/type/%20ice%20
  • 那么 %20 是从哪里来的?
  • 所以你的文本中有空格。 :) TADA,修剪它。

标签: javascript reactjs


【解决方案1】:

你必须获取下拉选中元素的值

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

【讨论】:

  • 我认为self.value 可以胜任!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多