【问题标题】:How to auto change numbering of series of Q's on a survey page based on selecting yes/no ans如何根据选择是/否 ans 在调查页面上自动更改 Q 序列的编号
【发布时间】:2016-01-30 03:18:27
【问题描述】:

我有一个使用 DIV 元素而不是传统的 TABLE 方法编写的调查。

问题是:我必须为页面上的问题编号自动编号。有一个问题要求回答“是”或“否”,如果用户回答“是”,则页面上会显示更多问题,如果用户选择“否”,则不会出现。此外,还有一个问题是选择多个适用于用户的选项,并且基于这些复选框(或选择),页面上会显示更多的 Q。

需要根据页面显示的问题依次自动编号。

这与我想要实现的目标很接近 - http://jsfiddle.net/3RZWt/8/ 但使用 DIV,没有 TABLE 布局。因此,我没有删除选项,而是使用是/否单选按钮和一些显示其他问题的复选框。

<div class="form-control">
<label><span class="question-number">1</span>. Who:</label>
</div>

<div class="form-control" style="display:none;">
<label><span class="question-number">2</span>. What:</label>
</div>

<div class="form-control">
<label><span class="question-number">3</span>. When:</label>
</div>

<div class="form-control">
<label><span class="question-number">4</span>. Where:</label>
</div>

<div class="form-control">
<label><span class="question-number">5</span>. Why:</label>
</div>

【问题讨论】:

  • 欢迎来到 Stack Overflow!寻求代码帮助的问题必须包括在问题本身最好在Stack Snippet 中重现它所需的最短代码。见How to create a Minimal, Complete, and Verifiable example
  • “子问题”不会像 3a、3b 等编号吗?这将是合乎逻辑的进展。
  • 不,整个调查共有 24 个问题,其中一些问题根据 Q 中带有复选框的选择显示在屏幕上。让我编译代码并添加到这里。

标签: jquery html css angularjs


【解决方案1】:

您可以使用一个简单的 jQuery 选择器,然后遍历结果,如下所示:

function autonumber(){
  $.each($('.question-number:visible'), function(i, elem){
    $(elem).text(i + 1);
  })
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-control">
<label><span class="question-number">1</span>. Who:</label>
</div>

<div class="form-control" style="display:none;">
<label><span class="question-number">1</span>. What:</label>
</div>

<div class="form-control">
<label><span class="question-number">1</span>. When:</label>
</div>

<div class="form-control">
<label><span class="question-number">1</span>. Where:</label>
</div>

<div class="form-control">
<label><span class="question-number">1</span>. Why:</label>
</div>

<button onclick="autonumber()">Auto Number</button>

【讨论】:

  • 这适用于页面显示后的排序。在根据某些条件选择弹出其他问题的情况下,未按顺序编号。此解决方案仅在第一次加载时有效,并且在页面上有逻辑时不适用。有什么建议吗?我正在尝试编译和示例,但在 Fiddle 中有些东西不起作用:)
  • 更改问题编号将是一个非常混乱的用户体验...但是您可以再次调用自动编号功能,它会重新排序所有内容。
  • 非常感谢 JDB。我确实对其进行了一些调整,但效果很好!
【解决方案2】:

使用了 order();在每个单选按钮和复选框事件触发之后调用的函数(在显示和隐藏之后,这两个事件)。像魅力一样工作!

$(document).ready(function(){

        order();

        function order() {

            (function renumberQuestions() {
                $('.question-number:visible').each(function (index) {
                    $(this).text(index + 1);
                });
            })();
        }

【讨论】:

    【解决方案3】:

    使用与示例中相同的原理似乎更少工作,不是吗? :

    body {
        counter-reset: count;
    }
    
    .question-number {
        counter-increment: count;
    }
    
    .question-number:after {
        content: counter(count);
    }
    

    【讨论】:

    • 是的,这也有效!但是,有时它在 IE8 浏览器中给我带来了问题。这是我想到的第一个解决方案!
    猜你喜欢
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多