具有导致语法问题的变量的名称选择器

Name selector with variables causing syntax problems

就是想不通。我确信我的循环工作正常,但错误在于我的名称选择器和变量的语法。我试过各种方括号和引号的组合。我需要使用 name 作为选择器,我的 objective 用于在 运行.

上勾选所有复选框

var TabMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var imonth;
var KEYyear

KEYyear = "2016"


// LOOP CODE from Jan - Dec
for (imonth = 0; imonth < TabMonths.length; imonth++)

{ $('[name ="' + KEYyear + TabMonths[imonth]'"]').prop('checked',true);}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mymonths">
<label><input type="checkbox"  name="2016Jan" id="m6b01" /></label>
<label><input type="checkbox"  name="2016Feb" id="m6b02" /></label>
<label><input type="checkbox"  name="2016Mar" id="m6b03" /></label>
<label><input type="checkbox"  name="2016Apr" id="m6b04" /></label>
<label><input type="checkbox"  name="2016May" id="m6b05" /></label>
<label><input type="checkbox"  name="2016Jun" id="m6b06" /></label>
<label><input type="checkbox"  name="2016Jul" id="m6b07" /></label>
<label><input type="checkbox"  name="2016Aug" id="m6b08" /></label>
<label><input type="checkbox"  name="2016Sep" id="m6b09" /></label>
<label><input type="checkbox"  name="2016Oct" id="m6b10" /></label>
<label><input type="checkbox"  name="2016Nov" id="m6b11" /></label>
<label><input type="checkbox"  name="2016Dec" id="m6b12" /></label>
</div>

var TabMonths = ["Jan", "Feb", "Mar"];
var imonth;
var KEYyear

KEYyear = "2016"
for (imonth = 0; imonth < TabMonths.length; imonth++)
{ $('[name ="' + KEYyear + TabMonths[imonth]+'"]').prop('checked',true);} // missing + at the end of concat
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mymonths">
<label><input type="checkbox"  name="2016Jan" id="m6b01" /></label>
<label><input type="checkbox"  name="2016Feb" id="m6b02" /></label>
<label><input type="checkbox"  name="2016Mar" id="m6b03" /></label>
</div>

  1. 失踪+

这是工作代码,有一个小错字。此行中缺少“+”:

$('[name ="' + KEYyear + TabMonths[imonth] + '"]').prop('checked', true);

var TabMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var imonth;
var KEYyear;

KEYyear = "2016";

// LOOP CODE from Jan - Dec
for (imonth = 0; imonth < TabMonths.length; imonth++)

{
  $('[name ="' + KEYyear + TabMonths[imonth] +
    '"]').prop('checked', true);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mymonths">
  <label>
    <input type="checkbox" name="2016Jan" id="m6b01" />
  </label>
  <label>
    <input type="checkbox" name="2016Feb" id="m6b02" />
  </label>
  <label>
    <input type="checkbox" name="2016Mar" id="m6b03" />
  </label>
  <label>
    <input type="checkbox" name="2016Apr" id="m6b04" />
  </label>
  <label>
    <input type="checkbox" name="2016May" id="m6b05" />
  </label>
  <label>
    <input type="checkbox" name="2016Jun" id="m6b06" />
  </label>
  <label>
    <input type="checkbox" name="2016Jul" id="m6b07" />
  </label>
  <label>
    <input type="checkbox" name="2016Aug" id="m6b08" />
  </label>
  <label>
    <input type="checkbox" name="2016Sep" id="m6b09" />
  </label>
  <label>
    <input type="checkbox" name="2016Oct" id="m6b10" />
  </label>
  <label>
    <input type="checkbox" name="2016Nov" id="m6b11" />
  </label>
  <label>
    <input type="checkbox" name="2016Dec" id="m6b12" />
  </label>
</div>

您错过了连接(连接)整个表达式

$(document).ready(function(){
var TabMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var imonth;
var KEYyear= "2016";
// LOOP CODE from Jan - Dec
for (imonth = 0; imonth < TabMonths.length; imonth++){
    $('[name *="' + KEYyear+'"]').prop('checked',true);
}

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mymonths">
<label><input type="checkbox"  name="2016Jan" id="m6b01" /></label>
<label><input type="checkbox"  name="2016Feb" id="m6b02" /></label>
<label><input type="checkbox"  name="2016Mar" id="m6b03" /></label>
<label><input type="checkbox"  name="2016Apr" id="m6b04" /></label>
<label><input type="checkbox"  name="2016May" id="m6b05" /></label>
<label><input type="checkbox"  name="2016Jun" id="m6b06" /></label>
<label><input type="checkbox"  name="2016Jul" id="m6b07" /></label>
<label><input type="checkbox"  name="2016Aug" id="m6b08" /></label>
<label><input type="checkbox"  name="2016Sep" id="m6b09" /></label>
<label><input type="checkbox"  name="2016Oct" id="m6b10" /></label>
<label><input type="checkbox"  name="2016Nov" id="m6b11" /></label>
<label><input type="checkbox"  name="2016Dec" id="m6b12" /></label>
</div>

您也可以跳过使用 TabMonths 并使用 * 来匹配 name 属性上的子字符串。

这只是使用 jQuery .each() 迭代器使循环看起来更好的另一种方法。

var TabMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var imonth;
var KEYyear

KEYyear = "2016"


// LOOP CODE from Jan - Dec
$(TabMonths).each(function(){
  
  // this --> current month item
  $('[name ="' + KEYyear + this + '"]').prop('checked',true);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mymonths">
<label><input type="checkbox"  name="2016Jan" id="m6b01" /></label>
<label><input type="checkbox"  name="2016Feb" id="m6b02" /></label>
<label><input type="checkbox"  name="2016Mar" id="m6b03" /></label>
<label><input type="checkbox"  name="2016Apr" id="m6b04" /></label>
<label><input type="checkbox"  name="2016May" id="m6b05" /></label>
<label><input type="checkbox"  name="2016Jun" id="m6b06" /></label>
<label><input type="checkbox"  name="2016Jul" id="m6b07" /></label>
<label><input type="checkbox"  name="2016Aug" id="m6b08" /></label>
<label><input type="checkbox"  name="2016Sep" id="m6b09" /></label>
<label><input type="checkbox"  name="2016Oct" id="m6b10" /></label>
<label><input type="checkbox"  name="2016Nov" id="m6b11" /></label>
<label><input type="checkbox"  name="2016Dec" id="m6b12" /></label>
</div>