jQuery 0 而不是南

jQuery 0 instead of Nan

我用 jQuery 创建了一个问卷。 每个问题有 5 个单选按钮。 值 = 0,值 = 1,值 = 2,值 = 3,值 = 4

如果有人什么都没回答,我想设置值0。 现在将 "NaN" 推入我的数组。我找不到灵魂。

<div class="tab-pane active" role="tabpanel" id="step1">                                
<div class="qhead">
    <h3>Leadership</h3>
    <span class="underline-small"></span>
</div>
<div class="questions">                             
    <!-- Fragen -->
    <div class="row">
        <h4>Das ist Frage 1</h4>                                    
    </div>
    <div class="row">
        <p>Das ist Frage 1</p>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="0"><i class="input-helper"></i>Nicht aktiv</label>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="1"><i class="input-helper"></i>Schon davon gehört</label>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="2"><i class="input-helper"></i>Manche arbeiten damit</label>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="3"><i class="input-helper"></i>Wird sind sehr gut</label>
        <label class="radio radio-inline"><input type="radio" name="q1" id="q1" value="4"><i class="input-helper"></i>Wir setzen Maßstäbe</label>
    </div>
    <div class="row">
        <p>Das ist Frage 2</p>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="0"><i class="input-helper"></i>Nicht aktiv</label>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="1"><i class="input-helper"></i>Schon davon gehört</label>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="2"><i class="input-helper"></i>Manche arbeiten damit</label>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="3"><i class="input-helper"></i>Wird sind sehr gut</label>
        <label class="radio radio-inline"><input type="radio" name="q2" id="q2" value="4"><i class="input-helper"></i>Wir setzen Maßstäbe</label>
    </div>
    <div class="row">
        <p>Das ist Frage 3</p>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="0"><i class="input-helper"></i>Nicht aktiv</label>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="1"><i class="input-helper"></i>Schon davon gehört</label>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="2"><i class="input-helper"></i>Manche arbeiten damit</label>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="3"><i class="input-helper"></i>Wird sind sehr gut</label>
        <label class="radio radio-inline"><input type="radio" name="q3" id="q3" value="4"><i class="input-helper"></i>Wir setzen Maßstäbe</label>
    </div>
    <div class="row">
        <p>Das ist Frage 1</p>
        <label class="radio radio-inline"><input type="radio" name="q4" value="0"><i class="input-helper"></i>Nicht aktiv</label>
        <label class="radio radio-inline"><input type="radio" name="q4" value="1"><i class="input-helper"></i>Schon davon gehört</label>
        <label class="radio radio-inline"><input type="radio" name="q4" value="2"><i class="input-helper"></i>Manche arbeiten damit</label>
        <label class="radio radio-inline"><input type="radio" name="q4" value="3"><i class="input-helper"></i>Wird sind sehr gut</label>
        <label class="radio radio-inline"><input type="radio" name="q4" value="4"><i class="input-helper"></i>Wir setzen Maßstäbe</label>
    </div>
    <!-- Fragen Ende -->
</div>
<ul class="list-inline pull-right padtop">
    <li><button type="button" class="btn btn-primary next-step">Speichern und weiter</button></li>
</ul>

$(".done").click(function (e) {
//Count Questions
var step1  = $("#step1 p").length;
var step1a = 1;                 
var step1e = step1a + step1;

var questionnaire1 = []
for (var i=step1a; i<step1e; ++i ){
  var finalVar = "input[name='q"+i+"']:checked";
  var varCont = parseInt($(finalVar).val());
  questionnaire1.push(varCont);     
}
}); 

示例:结果为 [1,4,NaN,3,0] 对于正确的数据,我需要 [1,4,0​​,3,0]

我已经用 if 语句试过了,但这也不行。

$(".done").click(function (e) {
//Count Questions
var step1  = $("#step1 p").length;
var step1a = 1;                 
var step1e = step1a + step1;

var questionnaire1 = []
for (var i=step1a; i<step1e; ++i ){
var finalVar = "input[name='q"+i+"']:checked";
if($(finalVar).val() == "NaN") 
{questionnaire1.push(0)}
else{questionnaire1.push($(finalVar).val());}   
}
}); 

您应该遍历每一行(问题)并从中获取选中的单选按钮并使用该值。如果什么都不勾选,使用 0.

$(".done").click(function (e) {

   var questionnaire1 = [];

   $.each($(".row"),function(x,y){

      var c= $(y).find("input[type]:checked");

      var v=0;
      if(c.length)
      {
        v=parseInt(c.val());
      }
      questionnaire1.push(v);

   });
  console.log(questionnaire1);
}); 

Here 工作样本

你第二次尝试就差不多成功了。您只是错过了一个事实,即 .val() returns null,如果没有选择选项而不是 "NaN"NaN 只是您调用 parseInt().

失败的结果

要对此进行调整:

  var val = $(finalVar).val();
  if ( val == null) {
    questionnaire1.push(0)
  } else {
    questionnaire1.push( parseInt( val, 10 ) );
  }

Example Fiddle