【发布时间】:2016-12-27 19:19:21
【问题描述】:
我一直在研究基于决策树的表单。该表格由四个问题的页面组成,并带有预定的回答选项。每个页面可以有一个问题,该问题分支到一个新的问题分支。页面采用 div 的形式,具有分支名称和页码的数据属性(data-branch="whatever" 和 data-page-number="1")当用户回答发送给他们的问题时一个新的分支,一个 nextBranch 变量被设置,当所有四个问题都得到回答后,分支名称和页码值被添加到日志中,并调用 next() 方法。此方法根据 nextBranch 变量和日志中的最后一个条目(分支名称和页码)找出下一页。
如果 nextBranch 不等于 currentBranch,则用户被带到 nextBranch 的第一页,但如果 nextBranch 等于 currentBranch,则 pageNumber 递增,用户被带到当前分支的下一页.如果没有找到结果,我调用一个方法,反向循环遍历页面日志,直到迭代中的分支值与 currentBranch 值不同。当这些值不匹配时,我会从当前迭代中增加 pageNumber 并查找该页面。
当我只是从原始分支分支时,这种方法可以正常工作,但是当我从一个分支分支时,反向循环日志不再有效。
假设我有下面的树结构,我从 A1 开始并回答引导我到 C2 的问题,我的日志将如下所示:
[{'A': '1'},{'A': '2'},{'A': '3'},{'B': '1'},{'B': '2'},{'C': '1'},{'C': '2'}]
到达C2时,由于没有C3,所以我反向循环日志,我到达的第一个分支名称不等于最后一个条目的条目是B2,所以增加页码返回B3,这是有效的.现在日志是这样的
[{'A': '1'},{'A': '2'},{'A': '3'},{'B': '1'},{'B': '2'},{'C': '1'},{'C': '2'},{'B: '3'}]
在完成 B3 后,我再次反向循环日志,我到达的第一个分支名称不等于最后一个条目的项目是 C2 - 在此处增加页面返回 C3,而它实际上应该返回 A4...
我正在努力寻找当前设置方式的解决方案,所以我希望有任何建议!
这是我目前拥有的一个小提琴 - https://jsfiddle.net/yphyk3sq/
【问题讨论】:
标签: javascript recursion