我正在使用后期绑定将onClick事件分配给复选框(样式为点)。我的第一个任务[位于https://github.com/farfromunique/vampirrePoints/blob/master/events.js#L264]完美无缺,并按预期做出反应 - 所有点都将其作为onClick点击:
/* https://github.com/farfromunique/vampirrePoints/blob/master/main.js#L440 */
allDots[i].onclick = function() {
if (this.checked) {
decrementCounter(1);
} else {
incrementCounter(1);
};
}
但是,当Step11()
被触发并且freebieDotSetup()
被调用时,只有部分的复选框才会更新其onClicks。具体而言,sta1, sta2, sta3, sta4, sta5
(也可能是其他人)保持其初始值。
我已经尝试在分配过程中放入console.log()语句,看起来分配发生了,但它并没有“坚持”。为什么这不起作用?
代码参考(整个网站):https://github.com/farfromunique/vampirrePoints
根据要求,一个不起作用的JSFiddle:http://jsfiddle.net/farfromunique/mS4Lp/
注意:菜单错误,没有正确前进,并且没有“点”(复选框)可点击,因此功能无法测试。我强烈怀疑我的代码不是跨浏览器兼容的,但这对我来说并不是优先考虑的事情。
答案 0 :(得分:0)
解决方案:在函数freebieDotSetup()
中,我这样做:
for (i=0;i<attributeDots.length;i++) {
attributeDots[i] = allDots[i];
}
...
for (i=0;i<abilityDots.length;i++) {
abilityDots[i] = allDots[i+attributeDots.length];
}
...
for (i=0;i<disciplineDots.length;i++) {
disciplineDots[i] = allDots[i+abilityDots.length];
}
...
由于我使用的是前一组的长度,因此偶尔会覆盖以前的值(由于组更短)。我用这个纠正了这个:
startPos = startPos + attributeDots.length;
for (i=0;i<abilityDots.length;i++) {
abilityDots[i] = allDots[i+startPos];
}
每次将前一组的长度添加到startPos。进行此更改解决了我的问题。
......但JSFiddle仍然完全被破坏了。