Javascript:向变量添加新属性

时间:2015-08-10 13:22:32

标签: javascript jquery html

HTML

<div id = "btnsdhd" class="btn-group">
    <button type="button" id="31" value="SD" class="btn btn-default">SD</button>
    <button type="button" id="32" value="HD" class="btn btn-default">HD</button>
</div>

JS

var btnsdhdDiv = $('#btnsdhd');

var getsdhd = function () {

  // Get all sdhd's from buttons with .active class
  var sdhd = $('button.active', btnsdhdDiv).map(function () {
    return $(this).val();
  }).get();

  // If no sdhd's found, get sdhd's from any button.
  if (!sdhd || sdhd.length <= 0) {
    sdhd = $('button', btnsdhdDiv).map(function () {
        return $(this).val();
    }).get();   
  }

  return sdhd;
};

上面的代码捕获按钮的值并将其放在变量getsdhd

如果默认情况下没有选择任何按钮,它会捕获值(SD,HD)我要修改if语句,并在无按钮时向变量添加第三个值NC被选中 当没有按钮被选中时,我希望它看起来像(SD,HD,NC)。 我尝试使用.push()方法但是没有用。 任何线索都会有所帮助。

2 个答案:

答案 0 :(得分:1)

push()无法在您的情况下链接,因为push返回新的长度,而不是更新的数组。您需要将其添加到get()。

下面

var btnsdhdDiv = $('#btnsdhd');

var getsdhd = function () {

  // Get all sdhd's from buttons with .active class
  var sdhd = $('button.active', btnsdhdDiv).map(function () {
    return $(this).val();
  }).get();

  // If no sdhd's found, get sdhd's from any button.
  if (!sdhd || sdhd.length <= 0) {
    sdhd = $('button', btnsdhdDiv).map(function () {
        return $(this).val();
    }).get()
    sdhd.push("NC");   
  }

  return sdhd;
};

console.log(getsdhd());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = "btnsdhd" class="btn-group">
    <button type="button" id="31" value="SD" class="btn btn-default">SD</button>
    <button type="button" id="32" value="HD" class="btn btn-default">HD</button>
</div>

答案 1 :(得分:0)

您没有调用getsdhs函数。如果你调用你的功能它会工作。我使用console.log来测试它是否有效。

<强> JS

var btnsdhdDiv = $('#btnsdhd');

var getsdhd = function () {

  // Get all sdhd's from buttons with .active class
  var sdhd = $('button.active', btnsdhdDiv).map(function () {
    return $(this).val();
  }).get();

  // If no sdhd's found, get sdhd's from any button.
  if (!sdhd || sdhd.length <= 0) {
    sdhd = $('button', btnsdhdDiv).map(function () {
        return $(this).val();
    }).get();
    sdhd.push("NC");
  }

  console.log(sdhd);
  return sdhd;
}();

小提琴:https://jsfiddle.net/ABr/p23cb5dk/1/