Как удалить конкретный элемент из выпадающего списка? - PullRequest
0 голосов
/ 29 апреля 2019

Как пользователь может удалить конкретный элемент из выпадающего списка, а не весь список из выбранного элемента и далее?

<label> 
History:
    <select id="historySelect">
    </select>
</label>

<label>
    <input type="button" id="cmbDelete" value="Undo">
</label>


  var history = [];
  var historySelect

historySelect = document.getElementById('historySelect')
historySelect.addEventListener('change', ()=>{
restoreHistoryAction(historySelect.value)
    })

function drawCanvas() {
    contextTmp.drawImage(canvas, 0, 0);
history.push(contextTmp.getImageData(0,0,canvasTmp.width,canvasTmp.height))
        updateHistorySelection()
    context.clearRect(0, 0, canvas.width, canvas.height);
}

Вот код, который у меня есть для добавления истории вв раскрывающемся списке и для кнопки отмены.

function cmbDeleteClick(){
 if(history.length<=1)
  return

    history.pop()
    contextTmp.putImageData(history[history.length-1],0,0)
    updateHistorySelection()
  }

    function updateHistorySelection(){
    historySelect.innerHTML = ''

    history.forEach((entry,index)=>{
      let option = document.createElement('option')
      option.value = index
      option.textContent = index===0 ? 'Start ' : 'Action '+index
      historySelect.appendChild(option)
    })

    historySelect.selectedIndex = history.length-1
  }

  function restoreHistoryAction(index){
    contextTmp.putImageData(history[index],0,0)
  }

  cmbDelete = document.getElementById("cmbDelete");
  cmbDelete.addEventListener("click",cmbDeleteClick, false);

Было бы идеально, если удаляется только выбранный элемент из раскрывающегося списка. Весь код: JS Bin

1 Ответ

1 голос
/ 29 апреля 2019

вы, вероятно, ищете Array .prototype .splice () метод

array.splice (start [, deleteCount [, item1 [, item2 [, item2 [,...]]]])

это удалит selectIndex из выпадающего списка, но я не уверен, что ваша холст работает, хотя логика работает, если только она не делает то, чтоВы ожидали.

    function cmbDeleteClick(){
      if(history.length<=1) return;

      var historyIndex = document.getElementById("historySelect").selectedIndex;
      var historyItems = history.splice(historyIndex, 1);
      contextTmp.putImageData(historyItems[0],0,0);

      updateHistorySelection();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...