Как иметь увеличенное значение ordre каждый раз, когда я добавляю новую строку в JavaScript

0

У меня есть этот код, чтобы увеличить значение ordre:

$scope.addElement = function (_ordre) {

       console.log("_ordre 1"+_ordre);

       if(_ordre == undefined){
           _ordre = 0;


       if( _ordre == 0){
           _ordre = (parseInt(_ordre) + 1).toString();

       }

       }
       console.log("_ordre 2 "+_ordre);

   console.log("_ordre 3 "+_ordre);


        var tmpElement = {
                  ordre:(_ordre === undefined) ? (parseInt($scope.finalOperationsList[$scope.finalOperationsList.length-1].ordre) + 1 ): _ordre,
                  temps : '',
                  designation:'',
                  disable : false
                 };   

        if ($scope.finalOperationsList.indexOf(tmpElement) == -1) {
          $scope.finalOperationsList.push(tmpElement);
          var t = parseInt(_ordre)+1; //_ordre is a string
          _ordre =t;
        }
        console.log("dern  "+_ordre);
  }; 

Это то, что я всегда получаю в консоли, когда я пытаюсь добавить новую строку в свою таблицу:

_ordre 1undefined
 _ordre 2 1
 _ordre 3 1
 dern  2

Проблема в том, что когда я пытаюсь добавить новую строку в свою таблицу с инкрементным ordre каждый раз, я получаю этот результат в консоли (я застрял в 1 значение ordre)

Итак, как я могу исправить код, пожалуйста, чтобы увеличивать значение ordre каждый раз, когда я добавляю новую строку?

Спасибо за помощь.

Обновление: спасибо zerohero Sir за ваш ответ, но всегда та же проблема, это то, что я сделал в соответствии с вашим ответом:

$scope.addElement = function (_ordre) {

       console.log("_ordre 1"+_ordre);

       if(_ordre == undefined){
              _ordre = 0;
        }

        _ordre = (parseInt(_ordre) + 1).toString();

        console.log("_ordre 2 "+_ordre);

        _ordre = (parseInt(_ordre) + 1).toString();
        console.log("_ordre 3 "+_ordre);


        var tmpElement = {
                  ordre:(_ordre === undefined) ? (parseInt($scope.finalOperationsList[$scope.finalOperationsList.length-1].ordre) + 1 ): _ordre,
                  temps : '',
                  designation:'',
                  codeOperation : 0,
                  disable : false
                 };   

        if ($scope.finalOperationsList.indexOf(tmpElement) == -1) {
          $scope.finalOperationsList.push(tmpElement);


        }
        console.log("dern  "+_ordre);
  };  

Я получаю всегда в строках "ordre" значение equl до 2 miss я ничего в коде??? еще раз спасибо за помощь

Теги:

1 ответ

1

Это будет срабатывать только один раз, установив _orde на 1, когда _orde не определено:

if(_ordre == undefined){
           _ordre = 0;
       if( _ordre == 0){
           _ordre = (parseInt(_ordre) + 1).toString();

       }
}

Затем вы выводите это последовательно:

console.log("_ordre 2 "+_ordre);
console.log("_ordre 3 "+_ordre);

Поскольку в _ordre не было внесено никаких изменений, в обоих случаях будет показано 1.

Единственный раз, когда вы устанавливаете _ordre для чего-либо другого, кроме 1, является:

var t = parseInt(_ordre)+1; //_ordre is a string
_ordre =t;

И это происходит после того, как вы установили tmpElement ordre в 1.

Ваша логика очень ошибочна.

Сделай это:

if(_ordre == undefined){
      _ordre = 0;
}

_ordre = (parseInt(_ordre) + 1).toString();

console.log("_ordre 2 "+_ordre);

_ordre = (parseInt(_ordre) + 1).toString();

console.log("_ordre 3 "+_ordre);
  • 0
    каждая строка, которую я добавляю в таблицу, имеет _ordre = неопределенный, поэтому я должен каждый раз увеличивать значение _ordre перед добавлением новой строки
  • 1
    вы передаете _ordre в функцию, я предположил, что _ordre где-то сохраняется глобально, если это не так, то _ordre всегда будет начинаться как неопределенное, так как оно не определено нигде до вызова функции
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню