【问题标题】:Can access event.target, which has a value attribute, but event.target.value always returns undefined?可以访问event.target,它有value属性,但是event.target.value总是返回undefined?
【发布时间】:2019-04-22 22:57:09
【问题描述】:

我是 React 新手。这绝对让我感到困惑。我可以使用 event.target 访问 HTML 元素,它显示的值等于某个数字,但是每次我使用 event.target.value 时,我都会得到未定义。

我尝试过复制其他代码。我试过谷歌搜索和搜索堆栈溢出。我尝试使用 currentTarget 而不是 target 并获得完全相同的结果。这是非常简单的东西;怎么了?。

class Calculator extends React.Component {
  constructor() {
    super();
    this.state = {
      input : "0"
    }
    this.handleNumber = this.handleNumber.bind(this);
  }

  handleNumber(event) {
    event.preventDefault();
    console.log(event.target);
    console.log(event.target.value);
  }

  render() {
    return (
      <div id="calculatorLayout">
        <div id="display">{this.state.input}</div>
        <div className="calculatorButtons" id="zero" value="0" onClick={this.handleNumber}>0</div>
        <div className="calculatorButtons" id="one" value="1" onClick={this.handleNumber}>1</div>
        <div className="calculatorButtons" id="two" value="2" onClick={this.handleNumber}>2</div>

...等等。

我希望在访问 event.target.value 时获得数字,但每次我都未定义。

event.target 返回:

<div class="calculatorButtons" id="zero" value="0">0</div>

event.target.value 相同元素返回:

undefined

我做错了什么?

【问题讨论】:

  • 对于非&lt;input&gt; 元素,您必须使用event.target.getAttribute("value")
  • 非常感谢,添加为答案,我会接受。

标签: javascript reactjs


【解决方案1】:

DOM 节点上的.value 属性 仅适用于&lt;input&gt;&lt;textarea&gt; 之类的东西。对于其他元素(例如您的&lt;div&gt;),您必须通过.getAttribute() 获取值。因此

  console.log(event.target.getAttribute("value"));

应该按照你的要求去做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-25
    • 2023-04-11
    • 1970-01-01
    • 2023-03-20
    • 2017-03-18
    • 2016-01-16
    • 1970-01-01
    • 2022-11-24
    相关资源
    最近更新 更多