Je ne veux pas limiter le nombre d'ajouts qui se produisent dans Jquery chaque fois que je clique sur le bouton

    function standardRoom() {
  var flag = 0
  if ($('select#selectBoxStandard option').length > 1 ) {
    flag++
    $('#selectBoxStandard').find("option:nth-last-child(-n+" + $('#selectBoxStandard').val() + ")").remove();
    if (flag <= 1) {
        $("#roomDetail ul").append('<li><strong>Standard Room - Regular Online Rate</strong> </li>').append('<li class="pull-right"><h4 style="color:darkorange">PHP {{$availableRooms[0]['nightRate']}}</h4></li>').append('<li>Number of night(s): {{$n_nights}} </li>').append('<li>Number of person(s): </li>').append('<li class="hr">Number of room(s): </li>').append(flag);
    }
  }else {
    alert("No more rooms");
  }
}

J'ai essayé d'utiliser l'instruction if sur la base de ce que je trouve ici. Mais cela ne fonctionne pas, il continue de s'ajouter.

0
Rei 27 janv. 2019 à 17:30

3 réponses

Meilleure réponse

Chaque fois que vous appelez la fonction standardRoom, la variable flag est réinitialisée à 0, donc elle continuera toujours à ajouter les éléments. Assurez-vous de stocker cette variable dans un endroit plus global où vous n'avez pas besoin de la réinitialiser:

   var flag = 0;
   function standardRoom() {
       if ($('select#selectBoxStandard option').length > 1 ) {
           flag++
           $('#selectBoxStandard').find("option:nth-last-child(-n+" + 
           $('#selectBoxStandard').val() + ")").remove();
           if (flag <= 1) {
               $("#roomDetail ul").append('<li><strong>Standard Room - Regular Online Rate</strong> </li>').append('<li class="pull-right"><h4 style="color:darkorange">PHP {{$availableRooms[0]['nightRate']}}</h4></li>').append('<li>Number of night(s): {{$n_nights}} </li>').append('<li>Number of person(s): </li>').append('<li class="hr">Number of room(s): </li>').append(flag);
           }
       } else {
          alert("No more rooms");
       }
    }
2
Laurens 27 janv. 2019 à 14:34

Vous pouvez utiliser des attributs de données personnalisés au lieu de votre variable locale. Lorsque dom ready, vous pouvez définir la valeur de l'attribut data flag pour votre élément selectBoxStandard et après l'avoir utilisé:

// init flag value
$('#selectBoxStandard').data('flag', 0);

function standardRoom() {
    // get flag value
    var flag = $('#selectBoxStandard').data('flag');


    if ($('select#selectBoxStandard option').length > 1 ) {

        // update flag value
        $('#selectBoxStandard').data('flag', flag++)

        $('#selectBoxStandard').find("option:nth-last-child(-n+" + $('#selectBoxStandard').val() + ")").remove();
        if (flag <= 1) {
            $("#roomDetail ul").append('<li><strong>Standard Room - Regular Online Rate</strong> </li>').append('<li class="pull-right"><h4 style="color:darkorange">PHP {{$availableRooms[0]['nightRate']}}</h4></li>').append('<li>Number of night(s): {{$n_nights}} </li>').append('<li>Number of person(s): </li>').append('<li class="hr">Number of room(s): </li>').append(flag);
        }
    }else {
        alert("No more rooms");
    }
}
1
gaetanoM 27 janv. 2019 à 14:45

flag est réinitialisé à chaque appel de fonction. Définissez-le en dehors de la fonction.

 var flag = 0    
    function standardRoom() {

          if ($('select#selectBoxStandard option').length > 1 ) {
        flag++
        $('#selectBoxStandard').find("option:nth-last-child(-n+" + $('#selectBoxStandard').val() + ")").remove();
        if (flag <= 1) {
            $("#roomDetail ul").append('<li><strong>Standard Room - Regular Online Rate</strong> </li>').append('<li class="pull-right"><h4 style="color:darkorange">PHP {{$availableRooms[0]['nightRate']}}</h4></li>').append('<li>Number of night(s): {{$n_nights}} </li>').append('<li>Number of person(s): </li>').append('<li class="hr">Number of room(s): </li>').append(flag);
        }
      }else {
        alert("No more rooms");
      }
    }
1
ellipsis 27 janv. 2019 à 14:33