如何使表单代码高效而不冗余

时间:2014-09-27 19:25:04

标签: jquery html forms conditional conditional-statements

我正在制作一个自定义提问器,它会向用户询问一组是和否的问题。当用户回答这些问题时,它将分析最终组合的可能性。我正试图找到一种更简单的方法来完成这段代码。

这是我的jsfiddle解释它更容易。请记住,我知道我的方法是多余的。 http://jsfiddle.net/tLaefycp/

<div id="Q1">
    <input type="radio">Yes
    <input type="radio">No
</div>

    <div id="Q2"> <!-- Yes to q1 -->
        <input type="radio">Yes
        <input type="radio">No
    </div>

    <div id="Q2"> <!-- No to Q1 -->
        <input type="radio">Yes
        <input type="radio">No
    </div>

        <div id="Q3"> <!-- Yes to q1 and q2 -->
            <input type="radio">Yes
            <input type="radio">No
        </div>

        <div id="Q3"> <!-- yes to q1 no to q2 -->
            <input type="radio">Yes
            <input type="radio">No
        </div>

        <div id="Q3"> <!-- no to q1 yes to q2 -->
            <input type="radio">Yes
            <input type="radio">No
        </div>

        <div id="Q3"> <!-- no to q1 no to q2 -->
            <input type="radio">Yes
            <input type="radio">No
        </div>

1 个答案:

答案 0 :(得分:2)

直接使用jquery创建问题和答案以编程方式,使用已定义的值数组,而不是从一开始就将其全部放在html中。我正在为您提供一个简化的示例结构,您需要计算逻辑。但它应该给你一个起点。

如果迭代一般问题,然后一旦得到答案,从data对象迭代相应的数组,就可以简化代码。例如,用户选择trucks,然后我们知道我们必须迭代truckQuestions

var data = {genericQuestions : 
                [{question:"Do you like cars or trucks?",
                  answers: [["cars","carQuestions"],
                            ["trucks","truckQuestions"]]
                 }],
            truckQuestions :
                [{question:"Do you want a lift on your truck?",
                  answers: ["Yes","no"]
                  }
                 //More questions
                 ],
            carQuestions :
                [{question:"Do you want a lift on your truck?",
                  answers: ["Yes","no"]
                  }
                 //More questions
                 ]
           }

对于html,有一个模板,您可以在其中输入值(问题和答案)并每次重复使用它。请注意,要访问truckQuestions我们可以data.truckQuestions,还可以data['truckQuestions'],这样我们就可以重复使用data.genericQuestions[0].answers[1][1]的值(希望这不会让您感到困惑) )