Javascript在多个级别显示/隐藏

时间:2015-09-03 11:23:29

标签: javascript jquery

我需要帮助了解如何编写显示/隐藏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已被隐藏且不再需要时。

1 个答案:

答案 0 :(得分:1)

为什么不改变你的javascript来实现你正在寻找的行为? 基本上,您希望实现一系列状态,以及一些有关状态转换的特定规则,您需要将这些规则放入函数中。 您的模型是数组[{question_number, answer, answer_eval}]answer_eval可以是goodbad。 您的州是一个数组[{question number, show}]show可以是displayhide

当您单击某个问题时,您将获得该问题的编号,您在阵列中拥有当前状态和模型,并且您想要确定下一个状态。写出能够做到这一点的功能。

所以它是一个函数f :: (event, state, model) -> (state, model) 可以在这些行周围指定:

  • 事件:点击

    1. 获取问题编号
    2. 显示问题
    3. 使用answer_eval NOT good隐藏所有其他问题(这应该包含隐藏您的第三个问题)
    4. 隐藏所有其他相关问题(应该包括隐藏第二个问题)
    5. 更新模型和状态数组
  • 事件:评估答案

    1. 获取问题编号
    2. compute answer_eval
    3. good =>显示依赖问题
    4. bad => 你的行为
    5. 更新模型和状态数组

我并不完全明白点击后你想要的行为是什么,但原则总是一样的。如果您能够指定它,则可以编写它。

希望有所帮助