如何为div类添加循环?

时间:2017-01-24 06:21:43

标签: javascript jquery html

这些是div的集合,我想在某些计数上添加循环。

我尝试过jquery和javascript但不起作用。请帮忙。

从复选框开始计数,计数是在复选框中选择的值,需要动态填充以下div组。我编写了一个jquery来获取计数以及复选框值。当用户选择这些框时,div的集合需要显示为计数数。

function arrayValues(item, index)
    {
        var cd = $("input[name=car_damage]:checked");
         var eg = cd.map(function () {return this.value;}).get().join(",");
         var temp = new Array();
         temp = eg.split(",");
         text="";
         alert(temp);
         //alert(eg); 
         var ef = cd.size();
         alert(ef);
}

复选框代码:

<hr>

                <div class="car_map" id="carmap">
                    <div class="row">
                        <div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-4">
                            <div class="item">
                                Front
                                <input type="checkbox" name="car_damage" value="Front" />
                            </div>
                        </div>                  
                    </div>
                    <div class="row">
                        <div class="col-xs-5 col-sm-4">
                            <div class="item">                          
                                Front Wing Left
                                <input type="checkbox" name="car_damage" value="Front Wing Left"/>
                            </div>
                        </div>  
                        <div class="col-xs-5 col-xs-offset-2 col-sm-4 col-sm-offset-4">
                            <div class="item">
                                Front Wing Right
                            <input type="checkbox" name="car_damage" value="Front Wing Right"/>
                            </div>
                        </div>                  
                    </div>
                    <div class="row margin-bottom">
                        <div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-4">
                            <div class="item">
                                Bonnet
                                <input type="checkbox" name="car_damage" value="Bonnet"/>
                            </div>
                        </div>                  
                    </div>
                    <div class="row">
                        <div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-4 ">
                            <div class="item">
                                Windscreen
                                <input type="checkbox" name="car_damage" value="Windscreen"/>
                            </div>
                        </div>                  
                    </div>
                    <div class="row margin-bottom">
                        <div class="col-xs-5 col-sm-4">
                            <div class="item">
                                Front Door Left
                                <input type="checkbox" name="car_damage" value="Front Door Left"/>
                            </div>
                        </div>  
                        <div class="col-xs-5 col-xs-offset-2 col-sm-4 col-sm-offset-4">
                            <div class="item">
                                Front Door Right
                                <input type="checkbox" name="car_damage" value="Front Door Right"/>
                            </div>
                        </div>
                    </div>
                    <div class="row margin-bottom">
                        <div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-4 ">
                            <div class="item">
                                Roof
                                <input type="checkbox" name="car_damage" value="Roof"/>
                            </div>
                        </div>                  
                    </div>
                    <div class="row">
                        <div class="col-xs-5 col-sm-4">
                            <div class="item">
                                Back Door Left
                                <input type="checkbox" name="car_damage" value="Back Door Left"/>
                            </div>
                        </div>  
                        <div class="col-xs-5 col-xs-offset-2 col-sm-4 col-sm-offset-4">
                            <div class="item">
                                Back Door Right
                                <input type="checkbox" name="car_damage" value="Back Door Right"/>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-4 ">
                            <div class="item">
                                Rear Windscreen
                                <input type="checkbox" name="car_damage" value="Rear Windscreen"/>
                            </div>
                        </div>                  
                    </div>
                    <div class="row">
                        <div class="col-xs-5 col-sm-4">
                            <div class="item">
                                Rear Left
                                <input type="checkbox" name="car_damage" value="Rear Left"/>
                            </div>
                        </div>  
                        <div class="col-xs-5 col-xs-offset-2 col-sm-4 col-sm-offset-4">
                            <div class="item">
                                Rear Right
                                <input type="checkbox" name="car_damage" value="Rear Right"/>
                            </div>
                        </div>                  
                    </div>
                    <div class="row">
                        <div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-4 ">
                            <div class="item">
                                Rear 
                                <input type="checkbox" name="car_damage" value="Rear"/>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="row">       
                    <div class="col-xs-12 col-sm-4 col-md-4">
                        <div class="btn btn-custom btn-sm btn-decline center-block" data-scroll="step3">Back</div>
                    </div>  
                    <div class="col-xs-12 col-sm-4 col-md-4">
                        <div class="btn btn-custom btn-sm btn-decline center-block">Save For Later</div>
                    </div>
                    <div class="col-xs-12 col-sm-4 col-md-4">
                        <div class="btn btn-sm btn-custom center-block" data-scroll="step5" id="add_trip" onclick="arrayValues()">Continue</div>
                    </div>
                </div>
            </div>

<hr>
<div class="col-xs-12 col-sm-6">
  <div class="form-label">
    Rear
  </div>
  <div class="photo-picker" id="photo-picker">
  </div>
</div>
<div class="col-xs-12 col-sm-6">
  <div class="box photos">
    <div class="row">
      <div class="col-xs-12">
        <h4>Photo Instructions</h4>
      </div>
    </div>
    <div class="photo-sample" id="photo-sample">
      <div class="row">
        <div class="col-xs-12">
          <div class="form-sublabel">
            Stand approx. 2m back from the Rear of the vehicle.</div>
          <imgsrc="/hfiprojectstorefront/_ui/desktop/common/hfiproject/images/placeholder-photo.png" class="img-responsive center-block" alt="" />
        </div>
      </div>
    </div>
    <div class="photo-real" id="photo-real">
      <div class="row">
        <div class="col-xs-12">
          <div class="cont">
            <video id="v" class="img-responsive center-block"></video>
            <div class="player-buttons" id="take" style="display:none;"></div>
          </div>
          <canvas id="canvas" style="display:none;"></canvas>
          <img src="" id="photo" class="img-responsive center-block" />
        </div>
        <div class="col-xs-12">
          <div class="form-label">
            Was this photo taken at the scene?
          </div>
        </div>
        <div class="col-xs-12">
          <div class="list-group segmented-control">
            <span class="list-group-item half active">
        YES
        <input type="radio" name="scene_photo" value="YES" checked="checked"/>
        </span>
            <span class="list-group-item half ">
        NO
        <input type="radio" name="scene_photo" value="NO"/>
        </span>
          </div>
        </div>
        <div class="col-xs-12">
          <div class="form-label">
            Optional Comment
          </div>
        </div>
        <div class="col-xs-12">
          <textarea class="form-control" name="optional" id="optional"></textarea>
        </div>
      </div>
      <div class="row">
        <div class="col-xs-12 col-sm-6">
          <a href="" class="btn btn-custom btn-sm btn-decline center-block">Delete</a>
        </div>
        <div class="col-xs-12 col-sm-6">
          <a href="" class="btn btn-custom btn-sm center-block">Save</a>
        </div>
      </div>
    </div>
  </div>
</div>
<hr>

2 个答案:

答案 0 :(得分:0)

您正在寻找的解决方案尚不清楚。

然而,需要最少量的工作就是创建一个在change和jquery上执行的函数来操作你的DOM元素不是一个很好的解决方案,如果你需要状态管理。

我相信更好的解决方案是使用reactjs,其中use可以创建组件并利用jsx。

或AngularJS框架,您可以在其中执行ng-repeat或自定义指令,该指令接受输入以显示您的div。

答案 1 :(得分:0)

你真的不清楚你想要填充什么,但你可以像这样动态生成任何DOM元素。

fnCreateDOMElement = function(el, num, context) {
  var e = document.createElement(el);
  for(var i=0; i<num; i++){
    document.context.appendChild(e);
  }
}
上面的代码片段可以像这样使用。

document.getElementById("populator").addEventListener('change', function(){
  //reset contents of container if needed. comment if not needed
  document.getElementById('container').innerHTML = "";  
  var times = this.value;
  for(var i=0; i<times; i++) {
    var mydiv = document.createElement('div');
    var myparag = document.createElement('p');

    mydiv.setAttribute('class', 'foo');
    myparag.setAttribute('class', 'fooized');      
    
    var txt = document.createTextNode('Foo #'+(i+1));
    myparag.appendChild(txt);
    
    mydiv.appendChild(myparag);
   
    document.getElementById('container').appendChild(mydiv);   
  }

});
<div id="container">
  
</div>
<input type="number" min="0" placeholder="how many?" id="populator">

以上函数可以使用javascript的default/optional arguments进行重构。