我花了3个小时try 这样做,我只能显示第二个问题,但之后的任何问题都不会出现.

$(document).ready(function() {

  var form = $('form');
  var stepCount = 0;
  var formCount = $('.z_window').length;
  $('body').append(stepCount);
  $(form).submit(function(e) {

    if (stepCount <= 3) {
      e.preventDefault();
      $('.z_window:eq(' + stepCount + ')').css({
        'left': '1000px',
        'right': '-1000px'
      });
      $('.z_window:eq(' + stepCount + 1 + ')').css({
        'left': '0px',
        'right': '0px'
      });
      $('head').append('<style>.z_progress_bar::before{width:66%;}</style>');
    }
    stepCount++;
  })
})
:root {
  --bar-color: rgba(229, 229, 229, 255);
  --progress-color: rgba(29, 62, 133, 255);
  --answer-color: rgba(29, 62, 133, 255);
  --border-color: rgba(99, 99, 99, 255);
}

.z_box {
  overflow: hidden;
  margin: auto;
  max-width: 500px;
  padding: 10px;
  position: relative;
  padding-bottom: 100px;
  min-height: 600px;
}

.z_logo {
  max-width: 500px;
  margin: 10px 0px
}

.z_logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}

.z_progress_text {
  display: block;
  margin-bottom: 20px;
  font-weight: 700;
  font-family: arial;
}

.z_progress_bar {
  display: block;
  min-height: 5px;
  max-width: 500px;
  background: var(--bar-color);
}

.z_progress_bar::before {
  transition: width 0.5s ease;
  content: '';
  display: block;
  min-height: 5px;
  background: var(--progress-color);
  border-radius: 5px;
  width: 33%;
}

.z_question_text {
  display: block;
  margin-top: 20px;
  margin-bottom: 40px;
}

.z_answer_container {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.z_answer {
  display: flex;
  flex-wrap: nowrap;
  gap: 10px;
  align-items: center;
}

.z_answer input[type='radio'] {
  display: none;
}

.z_answer input[type='radio']+label {
  cursor: pointer;
  color: var(--border-color);
  border: 2px solid var(--border-color);
  padding: 10px 30px;
  border-radius: 25px;
}

.z_answer input[type='radio']:checked+label {
  background: var(--answer-color);
  color: white;
  border-color: var(--answer-color)
}

.z_answer textarea,
.z_answer textarea:focus,
.z_answer textarea:active {
  outline: none!important;
  resize: none;
  color: var(--border-color);
  border: 2px solid var(--answer-color);
  padding: 10px 10px;
  border-radius: 25px;
}

.z_answer input[type="text"],
.z_answer input[type="text"]:focus,
.z_answer input[type="text"]:active {
  width: 100%;
  outline: none!important;
  resize: none;
  color: var(--border-color);
  border: 2px solid var(--answer-color);
  padding: 10px 10px;
  border-radius: 25px;
}

textarea::-webkit-scrollbar {
  opacity: 0;
}

;
.z_box {
  min-height: 500px;
  position: relative;
}

.z_submit {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  margin-left: auto;
  display: flex;
  justify-content: flex-end;
  margin-bottom: 20px;
}

.z_submit input[type="submit"] {
  background: var(--answer-color);
  border-radius: 25px;
  padding: 10px 30px;
  border-color: var(--answer-color);
  border-style: solid;
  color: white;
}

.z_window {
  left: 0;
  position: absolute;
  transition: all 0.5s ease;
}

.z_w2,
.z_w3 {
  right: 1000px;
  left: -1000px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="z_box">
  <div class="row">
    <div class="col-md-12">
      <div class="z_logo">
      </div>
    </div>
    <div class="col-md-12">
      <p class="z_progress_text">
        Let's start!
      </p>
    </div>
    <div class="col-md-12">
      <span class="z_progress_bar"><!----></span>
    </div>
    <form action="" method="post">

      <!-- Multiple Choice answer -->
      <div class="z_window z_w1">
        <div class="row">
          <div class="col-md-12">
            <div class="z_question_text">
              Your Favorite Time To Workout ?
            </div>
          </div>
          <div class="col-md-12">
            <div class="z_answer_container">
              <div class="z_answer">
                <input type="radio" name="answer" id="answer_1"><label for="answer_1">Dawn</label>
              </div>
              <div class="z_answer">
                <input type="radio" name="answer" id="answer_2"><label for="answer_2">Pre Work</label>
              </div>
              <div class="z_answer">
                <input type="radio" name="answer" id="answer_3"><label for="answer_3">Post Work</label>
              </div>
              <div class="z_answer">
                <input type="radio" name="answer" id="answer_4"><label for="answer_4">Midnight</label>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="z_window z_w2">
        <div class="row">
          <div class="col-md-12">
            <div class="z_question_text">
              Your Favorite Time To Workout ?
            </div>
          </div>
          <div class="col-md-12">
            <div class="z_answer_container">
              <div class="z_answer">
                <textarea name="answer" id="answer" cols="60" rows="4" autofocus>
                                        
                                    </textarea>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="z_window z_w3">
        <div class="row">
          <div class="col-md-12">
            <div class="z_question_text">
              Your Favorite Time To Workout ?
            </div>
          </div>
          <div class="col-md-12">
            <div class="z_answer_container">
              <div class="z_answer">
                <input type="text" name="answer" id="answer">
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="z_submit">
        <input type="submit" value="Next">
      </div>
    </form>
  </div>
</div>

附言:这是我的工作帐号,所以如果我不在工作,我不能回复.

这是我觉得非常接近解决方案的过时代码,但我放弃了这里,转而使用

If

但如果有3个以上的问题,这就行不通了.

这些问题来自数据库,所以没有固定的数量.

推荐答案

问题是,当您编写代码时,您进行的是字符串连接,而不是加法

'.z_window:eq(' + stepCount + 1 + ')'

+运算符是左关联的,所以它首先是'.z_window:eq(' + stepCount,然后将1连接到它,然后将)连接到它.因此,如果stepCount1,则结果是

.z_window:eq(11)

您需要将stepCount + 1放在括号中,以强制将其作为加法而不是串联.

您还可以通过使用模板文字来简化这一过程.

$(`.z_window:eq(${stepCount + 1})`)

或者,您可以使用.eq()方法:

$('.z_window').eq(stepCount + 1)

这样做更可取,因为在jQuery 3.4中已经弃用了:eq Select 符.

Jquery相关问答推荐

如何使用 JQuery 将详细信息中的项目包装在容器中?

在 Bootstrap 3 中向工具提示添加换行符

$.post 和 $.ajax 之间的区别?

JQuery通过类名获取所有元素

如何使用jQuery删除父元素

jQuery绑定到粘贴事件,如何获取粘贴的内容

试图检测浏览器关闭事件

字符串化(转换为 JSON)具有循环引用的 JavaScript 对象

复选框值始终为打开

将图像 url 转换为 Base64

我想了解 jQuery 插件语法

使用 jQuery 的 ajax 方法将图像作为 blob 检索

如何让 twitter bootstrap 子菜单在左侧打开?

jQuery: Select 所有具有自定义属性的元素

如何隐藏 Twitter Bootstrap 下拉菜单

Select jQuery UI 自动完成后清除表单字段

JavaScript 等效于 jQuery 的扩展方法

将多个参数传递给 jQuery ajax 调用

Jquery Select 器输入[type=text]')

如何使用 ID 变量在 jQuery 中 Select 元素?