最近、javascriptの学習が始まり、単純なアプリケーションを作成しようとしています。それはulで、各liには2つのボタンがあり、liを移動するリスト項目があります。またはダウン。リスト項目を上下に動かす際のJavaScriptの問題
しかし、私は問題に遭遇しています。リストの最後の項目はここ
var ul = document.querySelector('ul');
ul.addEventListener('click', (e) => {
\t let clicked = e.target;
\t let li \t \t = clicked.parentNode;
\t let next = li.nextElementSibling.nextElementSibling;
\t let prev = li.previousElementSibling;
if (clicked.className === 'down') {
\t ul.removeChild(li);
ul.insertBefore(li, next);
} else if (clicked.className === 'up') {
\t ul.removeChild(li);
\t ul.insertBefore(li, prev);
}
});
<ul>
<li>item1 <button class="down">Move down</button><button class="up">Move up</button></li>
<li>item2 <button class="down">Move down</button><button class="up">Move up</button></li>
<li>item3 <button class="down">Move down</button><button class="up">Move up</button></li>
<li>item4 <button class="down">Move down</button><button class="up">Move up</button></li>
<li>item5 <button class="down">Move down</button><button class="up">Move up</button></li>
</ul>
を上方に移動することはできませんjsfiddleである:それはそれらの2例では動作文句を言わない理由https://jsfiddle.net/hu13x8w0/3/
は誰かが、私に説明できますか?私は何を間違えたのですか?
これは、上の行で 'Move Up'をラップアラウンドさせることに注意してください。 – Paulpro
@Paulpro - これはOPのオリジナルコードでも起こりました。それが意図的なものかどうかはわかりませんでした。 – nnnnnn
また、あなたの答えに間違いはありませんが、私はあなたが望む場合にそれに追加することができるOPのためのいくつかのランダムな推奨事項がありました。 1) 'removeChild'への呼び出しは、' li'ノードをDOM内のどこからでも移動させる 'insertBefore'が常に続いているので、効果がないので削除できます。 2) 'const'はすべての変数に対して' let'より意味があります(可能な限りデフォルトとして使用する)、 'let'は後で変更される可能性があることを意味します。 – Paulpro