Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJs-onClick事件中的奇怪错误_Javascript_Reactjs_Onclick_Onclicklistener - Fatal编程技术网

Javascript ReactJs-onClick事件中的奇怪错误

Javascript ReactJs-onClick事件中的奇怪错误,javascript,reactjs,onclick,onclicklistener,Javascript,Reactjs,Onclick,Onclicklistener,我想得到一个输入值,但似乎有什么问题,我无法解决 import React, { Component } from 'react'; ... this.state = { json:JSON.parse(props.data), objet: '', id: '', click: function(click){ var a = document.getElementById("click").value;

我想得到一个输入值,但似乎有什么问题,我无法解决

import React, { Component } from 'react';
...   
      this.state = {
      json:JSON.parse(props.data),
      objet: '',
      id: '',
      click: function(click){
        var a = document.getElementById("click").value;
        alert(a);
        a = null;
      }
    };
 ...
     {this.state.json[1].map(i => (
       ...
        <input onClick={this.state.click} value={i.id} id="click" ></input>
       ...
      ))}
import React,{Component}来自'React';
...   
此.state={
json:json.parse(props.data),
对象:“”,
id:“”,
单击:功能(单击){
var a=document.getElementById(“单击”).value;
警报(a);
a=零;
}
};
...
{this.state.json[1].map(i=>(
...
...
))}
在浏览器中 我看到:

问题是,当我单击它通常显示2的两个输入中的一个时。


我看不出它为什么不起作用。请帮我解决我卡住了。

您至少有两个不同的html元素具有相同的id(“单击”)。 因此,
document.getElementById(“单击”)
可能会返回您不期望的元素。
要解决此问题,请尝试更改
id={“click-”+i}
上的
id=“click”
,并更新相应的onClick函数。

您可以共享最小的工作代码吗?我说不清楚问题出在哪里。我从组件状态下的onClick函数中猜到了。非常感谢兄弟花了这么多时间,希望我解决了。是的,你完全正确,我没有看到id重复。谢天谢地,我用一种奇怪的方式解决了这个问题:我把函数改成了:`click:function(id){alert(id);}`并且这个函数的输入:
this.state.click(i.id)}value={i.id}id=“click”>
hopping它在未来不会引发任何问题。你应该尝试使用返回另一个函数的函数,因为我不确定您列出的代码应该如何工作。试试这个:
click:id=>()=>alert(id)
你是对的,我的语法出现了错误,解决方法正如你所说的
click:(id)=>{}