Javascript 当我向索引中添加新的数组元素时,以前的数组元素是未定义的
这是我昨天早些时候问过的一个扩展,我最初认为是jQuery的Javascript 当我向索引中添加新的数组元素时,以前的数组元素是未定义的,javascript,Javascript,这是我昨天早些时候问过的一个扩展,我最初认为是jQuery的.bind或.keyup事件导致了它,但它比这更神秘 我创建了一个更详细的解释,抱歉的质量 var stopTimeArray = [] $('.mdl-textfield__input.stage-time.stop_time').bind('input', function() { console.log('stopTimeArray', stopTimeArray) var stopTimeVal = parseI
.bind
或.keyup
事件导致了它,但它比这更神秘
我创建了一个更详细的解释,抱歉的质量
var stopTimeArray = []
$('.mdl-textfield__input.stage-time.stop_time').bind('input', function() {
console.log('stopTimeArray', stopTimeArray)
var stopTimeVal = parseInt(this.value)
console.log('stopTimeVal', stopTimeVal) //always prints [] on new form
var index = parseInt($(currentStage()).attr('rel')) - 1
console.log('index', index)
stopTimeArray[index] = stopTimeVal
updateTTH();
debugger;
});
function updateTTH() {
console.log(stopTimeArray)
// other code...
}
基本上我有一个表格,你可以复制。我只想在编辑某个特定输入时获取其值,将其推送到一个数组中,这样我就可以得到总数。例如,假设在第一个表单中,我输入20
,它将打印
停止时间数组► []
stopTimeVal 2
索引0
► [2]
停止时间数组► [2]
stopTimeVal 20
索引0
► [20]
这太完美了,这正是我想要的。但是,当我想向第二个表单添加内容时,就会出现问题。假设我们想在新表单中添加8
。这就是结果
停止时间数组► []
我不知道为什么,但很明显stopTimeArray正在被覆盖和重置
stopTimeVal 8
指标1
► (2) [未定义×1,8]
这是一个我非常迷茫的问题,因为我实际上认为机器是错的(jk)。但如果你们知道这件事,请告诉我:)
编辑:
currentStage()工作正常,但在这里,如果你们想看的话
var currentStage = function findCurrentStageContainer() {
var numStages = document.getElementsByClassName('stage-container').length;
for (var i = 0; i < numStages; i++) {
if (!hasClass(document.getElementsByClassName('stage-container')[i], "hidden-form")) {
return document.getElementsByClassName('stage-container')[i]
}
}
}
var currentStage=函数findCurrentStageContainer(){
var numStages=document.getElementsByClassName('stage-container')。长度;
对于(变量i=0;i
您是否尝试通过单击► 左边的按钮?展开的值是真实值,[undefined x 1,8]
只是控制台日志发生时数组的预览。如何使用currentStage()?代码在哪里?@ibrahimmahrir,是的,没有定义。currentStage()工作得非常好。可以有多少个阶段?为什么不在每次更改输入时填充整个数组?而且currentStage
可以优化很多(看在上帝的份上,你调用了getElementsByClassName
三次)。因为如果我按一下,那么每次我输入一个2位数的数字,它都会输入2个值。