使用javascript计算并添加动态ID和表单元素的值

时间:2016-03-22 14:18:54

标签: javascript jquery html

我正在创建一个列表,其中包含一些表单元素,如html复选框或单选按钮。我想将动态IDfor值提供给相应的LABEL标记。所有这一切,但使用JQuery / JavaScript。

我在JavaScript中表现不佳

dynamic ID and FOR values using Jquery/Javascript

$(document).ready(function() {
  function {
    var count = 0;
    var total = $('.product-menu li').length();

  }
});
.product-menu {
  display: block;
  list-style: none;
  margin: 0;
  padding: 0;
}
.product-menu li {
  display: list-item;
  line-height: 2;
}
.product-menu label {
  font-weight: normal;
  vertical-align: middle;
  padding-left: 10px;
  display: inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="product-menu">
  <li>
    <input type="checkbox" id="pm-1">
    <label for="pm-1">New Arrivals</label>
  </li>
  <li>
    <input type="checkbox" id="pm-2">
    <label for="pm-2">Accessories</label>
  </li>
  <li>
    <input type="checkbox" id="pm-3">
    <label for="pm-3">Bags</label>
  </li>
  <li>
    <input type="checkbox" id="pm-4">
    <label for="pm-4">Jackets</label>
  </li>
</ul>

3 个答案:

答案 0 :(得分:3)

尝试这样的事情

$(document).ready(function() {
    $(".product-menu li").each(function(index){
        var id=$(this).find("input").attr("id");
        if(id== undefined)
        {
          $(this).find("input").prop("id","pm-"+index);
          $(this).find("label").prop("for","pm-"+index);
        }
        else
        {
          $(this).find("label").prop("for",id);
        }
    });
});
.product-menu {
    display: block;
    list-style: none;
    margin: 0;
    padding: 0;
}
.product-menu li {
    display: list-item;
    line-height: 2;
}
.product-menu label {
    font-weight: normal;
    vertical-align: middle;
    padding-left: 10px;
    display: inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="product-menu">
    <li>
        <input id="test" type="checkbox" >
        <label >New Arrivals</label>
    </li>
    <li>
        <input type="checkbox">
        <label >Accessories</label>
    </li>
    <li>
        <input type="checkbox">
        <label>Bags</label>
    </li>
    <li>
        <input id="test2" type="checkbox">
        <label >Jackets</label>
    </li>
</ul>

答案 1 :(得分:1)

下面的代码会将动态添加到输入中,并添加到每个li中的标签中。 这里index每个都以0开头。

$(document).ready(function() {  
      $(".product-menu li").each(function(index){
         $(this).find("input").attr("id","pm-"+index);
        $(this).find("label").attr("for","pm-"+index);  
        });
    });

答案 2 :(得分:1)

JavaScript的:

var list = document.getElementsByClassName("product-menu")[0].children;
var listLen = list.length;

for( var i = 0; i<=listLen; i++) {
    list[i].firstElementChild.id = "pm-"+(i+1);
    list[i].lastElementChild.setAttribute("for", "pm-"+(i+1));
}