我有一个完全依赖于 JavaScript 和 Ajax 的三步过程来加载数据并动画化从一步到下一步的过程。更复杂的是,步骤之间的过渡(向前和向后)是动画的:-(。当用户通过流程锚点的进度出现时,会显示当前步骤和之前的步骤。如果他们点击了之前的步骤,那么它会将他们带回到上一步。
现在,整个过程(向前和向后)正常工作,如果您从第 1 步开始,但如果您直接跳到第 3 步,则第 1 步和第 2 步的锚点也会执行与第 3 步相同的操作。
这是代码的一部分,它循环遍历所有步骤直到用户将要执行的当前步骤,并依次显示每个锚点并将适当的函数分配给点击事件:
for (var i = 0; i < profile.current + 1; i++) {
if ($('step_anchor_' + i).innerHTML.empty()) {
var action = profile.steps[i].action;
var dao_id = profile.steps[i].dao_id;
$('step_anchor_' + i).innerHTML = profile.steps[i].anchor;
$('step_anchor_' + i).observe('click', function(){
pm.loadData(action, dao_id, true);
});
Effect.Appear('step_anchor_' + i, {
duration: 1,
delay: (down_delay++)
});
}
}
我知道问题在于传递 action 和 dao_id 参数的方式。我也尝试过传递 profile.steps[i].action 和 profile.steps[i].dao_id 但在这种情况下 profile 和 i或者至少我不在范围内。
如何做到这一点,以便我可以为每个步骤正确分配 action 和 dao_id 的参数?(如果有什么不同,我们使用的是 Prototype 和 Scriptaculous)