【发布时间】:2018-02-14 19:04:59
【问题描述】:
我想在网页中作为用户提出一系列问题,然后根据他们的回答为他们提供一个页面。但是,我不想将它们重定向到单独的表单/页面。
例如:
1)问题:你想看一个广场吗?
2)问题:你想看一个圆圈吗?
3)问:你想要红色吗?
4)问:你喜欢蓝色吗?
5)问:你想要橙色吗?
6)问:你喜欢黄色吗?
用户会看到第一个问题,然后是一个是按钮和一个否按钮。如果他们单击是,那么它将向他们显示第三个问题,如果他们单击否,那么它将向他们显示第二个问题。第 3 个问题的“否”导致第 4 个问题。第 2 个问题的“否”导致第 5 个问题,依此类推。 最终图像是红色方块、蓝色方块、橙色圆圈、黄色圆圈和黑色方块,并将根据用户通过问题的方式显示给用户。
我知道我可以通过为每个问题和一组按钮提供一个 ID 来做到这一点,并根据其他问题的答案使用 JS 显示/隐藏按钮/问题集(然后根据回答的最后一个问题显示最终结果),但我'我很好奇是否有更清洁的方法可以做到这一点,也许是某种形式、树和状态分配?在我的真实世界版本中,两个答案可能导致相同的状态。
这是我幼稚实现的开始:
<div id="b1">
<h5 id="q1">Question: Do you want to see a Square?</h5>
<button id="ay1">Yes</button><button id="an1">No</button>
</div>
<div class ="box" id="b2"><h5 id="q2">Question: Do you want to see a Circle?</h5>
<button id="ay2">Yes</button><button id="an2">No</button>
</div>
<div class ="box" id="b3"><h5 id="q3">Question: Do you want it Red?</h5>
<button id="ay3">Yes</button><button id="an3">No</button>
</div>
还有一个jsFiddle 的想法
【问题讨论】:
-
这似乎是一个简单的决策跟踪/逻辑流问题。您对逻辑有特定问题吗?还是您正在寻找更多的代码审查?如果是后者,您可能希望将您的问题重定向到codereview.stackexchange.com。
-
@TheJim01 我的观点是,随着选项数量的增加,HTML 变得繁琐,整个设置有点难看。好奇是否有更好的方法来使用一组按钮,以及某种状态跟踪或其他东西。
-
我的意思是你的问题——如书面——将吸引基于意见的答案,因为有很多方法可以解决这个问题。 就个人而言(已经是意见),我会创建一个问题元素,根据某种数组或结构动态替换其内容(问题),跟踪按钮点击响应,然后使用响应来制定结果通过动态创建 DOM 元素,或通过导入外部 HTML 文件。但这只是一种选择,这就是你的问题的问题——你会得到很多有效的选择,但只有一个“接受”。
-
我会反驳说,代码的本质是有许多有效的方法来做某事,有各种权衡和好处。我认为类似于询问堆栈溢出问题“如何对数组进行排序?”有很多答案。我知道天真的解决方案,但也知道一定有更好的解决方案,我很好奇一些更好的解决方案是什么。我将根据“最佳”代码选择“最佳”答案,这绝对是主观的(简短和可读的组合),但一直在这个网站上。
标签: javascript jquery html forms logic