Javascript 元素[i].onkeyup=function()仅对第一类元素激发
长话短说,这是我在24小时内第三次在Stackoverflow上发帖。尽管如此,我离我的答案越来越近了,但我被一件小事难住了 基本上,我使用的是Cocoon,它可以帮助创建嵌套表单,因此当用户想要创建另一个项目时,她必须提交两个表单,因此,同一类中会有多个项目 这是我的密码Javascript 元素[i].onkeyup=function()仅对第一类元素激发,javascript,Javascript,长话短说,这是我在24小时内第三次在Stackoverflow上发帖。尽管如此,我离我的答案越来越近了,但我被一件小事难住了 基本上,我使用的是Cocoon,它可以帮助创建嵌套表单,因此当用户想要创建另一个项目时,她必须提交两个表单,因此,同一类中会有多个项目 这是我的密码 var stopTimeElement = document.getElementsByClassName('mdl-textfield__input stage-time stop_time'); for (var i=
var stopTimeElement = document.getElementsByClassName('mdl-textfield__input stage-time stop_time');
for (var i=0; i<stopTimeElement.length; i++){
stopTimeElement[i].onkeyup = function() {
debugger;
var stopTimeVal = parseInt(this.value)
var index = parseInt($(currentStage()).attr('rel')) - 1
stopTimeArray[index] = stopTimeVal
wtf = stopTimeArray;
console.log('----wtf----: ',wtf)
componentHandler.upgradeDom();
updateTTH();
//reRun();
}
}
我知道混合使用JavaScript和jQuery有点混乱,但请告诉我您的想法 这是js中的标准scopes可见性问题。你应该把你的内在功能包装到生活中
.box{
宽度:100px;
高度:100px;
边框:1px纯黑;
背景色:暗灰色;
}
.box:悬停{
背景颜色:浅灰色;
}
我真的认为这会管用,但事情是一样的。对于第二种形式,我什么也没做:(@dsomel21,好吧。我看不见您正在将事件处理程序直接分配给onkeyup属性。我使用addEventListener()更改了答案)
method use@dsomel21,我添加了额外的示例,所以您可以在我的答案中查看。这非常有用,我有点好奇为什么您没有包装在一个自调用函数()中尽管如此。这是因为您没有可引用的索引吗?@dsomel21,因为我这里没有任何作用域数据。如果您更喜欢使用索引,并且将在事件处理程序操作中使用它们,如果我没有弄错的话,您仍然需要将其包装到iife中。至少,额外的iife级别不会让情况变得更糟。
function reRun() {
// code here
}
reRun()
for (var i=0; i<stopTimeElement.length; i++){
(function (i) {
stopTimeElement[i].addEventListener("keyup", function() {
debugger;
var stopTimeVal = parseInt(this.value)
var index = parseInt($(currentStage()).attr('rel')) - 1
stopTimeArray[index] = stopTimeVal
wtf = stopTimeArray;
console.log('----wtf----: ',wtf)
componentHandler.upgradeDom();
updateTTH();
//reRun();
});
})(i);
}