Javascript 首次单击不会触发警报
看看这个简单的函数:Javascript 首次单击不会触发警报,javascript,Javascript,看看这个简单的函数: handleEventClick(i){ this.setState({choosenDriver: this.state.drivers[i]}); alert(i); for (let ix in this.state.choosenDriver.cars) { alert(ix); } } 我希望在单击时触发alerti和alertix 由于某些原因,alertix不会在第一次单击时启动,但会在第二
handleEventClick(i){
this.setState({choosenDriver: this.state.drivers[i]});
alert(i);
for (let ix in this.state.choosenDriver.cars) {
alert(ix);
}
}
我希望在单击时触发alerti和alertix
由于某些原因,alertix不会在第一次单击时启动,但会在第二次单击时正常工作。然而,alerti的工作原理应该是这样的
有人能解释一下吗?
谢谢大家!
更新:
谢谢你们两个的回答。我肯定你已经解释了这个问题,但我还是不明白
现在我试试这个:
handleEventClick(i){
this.setState({choosenDriver: this.state.drivers[i]});
let a = this.state.choosenDriver.cars;
Array.prototype.forEach.call(a, function(child) {
// Do something with `child`
alert(child);
});
在第一次单击时,它会生成以下错误:
Uncaught TypeError: Array.prototype.forEach called on null or undefined
但在循环之前,我确实在第一行定义了choosenDriver,所以我不明白为什么会出现此错误。很明显,this.state.choosenDriver.cars没有自己的属性,所以您不会第一次看到alertix。@dfsq:听起来像是一个答案。:-除了它不必是自己的财产外,继承的财产也会出现。可枚举,是的,但拥有,不是。@Roger:如果cars是一个数组,请注意,现在几乎肯定不是这样,您应该遍历它的条目。提供一个方法列表,但可以使用forEach或类似方法,或者至少在循环中添加hasOwnProperty检查;它得到它的值。还是我错了?车是一个数组,我会看看你的链接!但是你不认为在代码中的这个位置循环浏览[汽车]是个好主意吗?我不知道还能在哪里做,每次选择河流改变,我都需要在那里对汽车做些事情。