我需要帮助了解如何编写显示/隐藏javascript,其中有多个级别的元素可以显示/隐藏。
我希望这不难解释。
我们的当前系统如何工作,是将CSS类添加到输入,例如单选按钮选项或复选框。 CSS类将是“show-question2”
需要切换为“show / hide”的元素被赋予类“showable-question2”
Javascript函数侦听click事件,将css类“show- {0}与具有相应”showable- {0}“的元素匹配,并切换其可见性。
我的问题:
例如,如果您有问题,根据您的回答方式,将显示/隐藏新问题。
但如果你如何回答第二个问题意味着第三个问题被“显示”,我就会遇到问题。
如果我要回去以不同方式回答原始问题,正如预期的那样,第二个问题将被隐藏,因为其可见性已被切换为关闭,但第三个相关问题仍然可见。
为了实现我的目标,这些元素是否需要嵌套在Html中?
修改
问题是问题取决于其他问题。
因此,如果问题1通过列表中的答案回答,然后触发第二个问题,则此实例中的第二个问题将显示给最终用户。
因此,您可以切换问题2对问题1如何得到解答的可见性。
问题2也可能有家属,因此如果用户使用特定选项回答问题2,则第三个问题将变为可见。
问题3,是问题2的依赖。
现在,如果用户认为他们已经改变主意,并选择问题1的不同答案,那么现在对问题2没有要求,它将被隐藏。
问题1,问题1没有切换问题3的可见性,问题3仍然可见,并且仅与问题2相关,问题2已被隐藏且不再需要时。
答案 0 :(得分:1)
为什么不改变你的javascript来实现你正在寻找的行为?
基本上,您希望实现一系列状态,以及一些有关状态转换的特定规则,您需要将这些规则放入函数中。
您的模型是数组[{question_number, answer, answer_eval}]
。 answer_eval
可以是good
,bad
。
您的州是一个数组[{question number, show}]
。 show
可以是display
或hide
。
当您单击某个问题时,您将获得该问题的编号,您在阵列中拥有当前状态和模型,并且您想要确定下一个状态。写出能够做到这一点的功能。
所以它是一个函数f :: (event, state, model) -> (state, model)
可以在这些行周围指定:
事件:点击
answer_eval
NOT good
隐藏所有其他问题(这应该包含隐藏您的第三个问题)事件:评估答案
answer_eval
我并不完全明白点击后你想要的行为是什么,但原则总是一样的。如果您能够指定它,则可以编写它。
希望有所帮助