top liタグだけを削除するのではなく、選択したリスト要素を削除する方法

Quinten Steenwyk

xボタンがクリックされた要素に基づいて特定のli要素を削除しようとしています。現在、エラーが発生しています

"bZMQWNZvyQeA:42 Uncaught TypeError:Failed to execute'removeChild 'on'Node':parameter 1 is not of type'Node '。"

これはパラメータがnullであることを意味する可能性があることを認識していますが、これは私には意味がありません。Chrome開発ツールは、onClick属性がremoveItemを正しく実行し、idNameをパラメーターとして渡していることを示しています。これはどのように機能していませんか?

var note = 0;

function saveInfo() {
  var idName = "note" + note;
  //assign text from input box to var text, and store in local storage
  var input = document.getElementById('input').value;
  var text = localStorage.setItem(note, input);
  var list = document.createElement("li");
  var node = document.createTextNode(input);
  var removeBtn = document.createElement("button");

  list.setAttribute("id", idName);
  removeBtn.setAttribute("onClick", `removeItem(${idName})`);
  removeBtn.innerHTML = "X";
  list.appendChild(node);
  list.appendChild(removeBtn);
  document.getElementById("output").appendChild(list);

  note += 1;
}

function removeItem(name) {
  var parent = document.getElementById("output");
  var child = document.getElementById(name);
  parent.removeChild(child);
}
テリー

私のコメントでは、からのクリックイベントのバブリングを聞くことをお勧めしますremoveBtnこの場合、必要なのはonclick、コードから属性割り当てロジックを削除し、代わりにremoveButtonクラスなどの識別可能なプロパティを指定することだけです。それにクラスを与えましょうdelete-button

var removeBtn = document.createElement("button");
removeBtn.classList.add('delete-button');
removeBtn.type = 'button';
removeBtn.innerHTML = 'X';

次に、#output実行時に存在することが保証されているレベルでクリックイベントをリッスンできます。イベントが発生したら、イベントターゲットに識別可能なプロパティがあるかどうかを確認するだけです。たとえば、remove-buttonこの場合クラスです。

output.addEventListener('click', function(e) {

  // GUARD: Do nothing if click event does not originate from delete button
  if (!e.target.matches('.remove-button')) {
    return;
  }

  // Delete parent node
  e.target.closest('li').remove();
});

クリックイベントが削除ボタンから発生したものでない場合は、return他に何もしません。それ以外の場合は、ボタンがクリックされたことがわかり、を使用してElement.closest().closest('li')最も近い<li>親ノードを取得して削除できます。

IE11を絶対にサポートする必要がある場合(これはサポートしませんElement.closest())、削除ボタンが要素の直接の子であると仮定してNode.parentNode<li>要素にアクセスして削除することもできます<li>

// Delete parent node
e.target.parentNode.remove();

以下の概念実証を参照してください。

var rows = 10;
var output = document.getElementById('output');

for (var i = 0; i < rows; i++) {
  var list = document.createElement('li');
  var node = document.createTextNode('Testing. Row #' + i);
  var removeBtn = document.createElement("button");
  removeBtn.classList.add('remove-button');
  removeBtn.type = 'button';
  removeBtn.innerHTML = 'X';
  
  list.appendChild(node);
  list.appendChild(removeBtn);
  
  output.appendChild(list);
}

output.addEventListener('click', function(e) {

  // GUARD: Do nothing if click event does not originate from delete button
  if (!e.target.matches('.remove-button')) {
    return;
  }
  
  e.target.closest('li').remove();
});
<ul id="output"></ul>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQL ServerのTOP(@x)または単に「すべての」行を選択する方法(SET ROWCOUNTなし)

分類Dev

keras高密度レイヤーのtop-k要素を選択する方法は?

分類Dev

DELETE TOP(X)ステートメントが前のSELECT TOP(X)が返したのと同じレコードを削除しないのはなぜですか?

分類Dev

ベクトルまたは配列から最も一般的な数値を選択する方法(TOP5トップリスト)C ++

分類Dev

クエリの選択句でTopを使用してDistinctを使用する

分類Dev

集計/グループを使用したクエリでTOP1を選択するT-SQL

分類Dev

特定の合計になるtop-x要素を取得する方法

分類Dev

Xcodeサイズインスペクタータブで選択した要素の制約をすばやく削除する簡単な方法はありますか?

分類Dev

空の列でORDERBYを使用したTOP1の結果セットがTOP5とは異なる結果を表示するのはなぜですか?

分類Dev

imgタグがmargin-topプロパティを受け入れるのはなぜですか?

分類Dev

アクセスのクエリでLIMITを使用するが、TOPは使用しない方法

分類Dev

PostgresでTOPレコードを選択する方法。同様の質問ではありません

分類Dev

JQueryで、要素全体ではなくボタンをクリックするだけでli要素を削除するにはどうすればよいですか?

分類Dev

cssの「left」属性と「top」属性の両方でdiv要素を見つける方法はありますか?

分類Dev

top =前の兄弟のbottomの場合、JQueryは要素からクラスを削除します

分類Dev

/ app / top /のValueError

分類Dev

クエリからMSSQL TOP句を削除して、SQLiteで機能させる方法

分類Dev

jQueryで、ドキュメントではなく親を基準にした位置値を持つ要素の「top、left」プロパティを設定するにはどうすればよいですか?

分類Dev

データベースから複数のtop3を選択します

分類Dev

top_n()nを選択しない

分類Dev

<small>タグにmargin-topを適用する方法は?

分類Dev

top = $ this.css( "top")は、オブジェクトと要素の値を返します

分類Dev

テーブルをフィルタリングし、Daxで1つのTOP行に制限する方法

分類Dev

選択したアイテムをリストボックスだけでなくデータベースからも削除します

分類Dev

Entity Frameworkを使用して、リスト内のFKごとにTOP1を選択します

分類Dev

ReactTableのページ付けにカスタム要素を追加します-top

分類Dev

SELECT TOPを使用すると変換に失敗しましたが、すべての行を選択するとエラーは発生しません

分類Dev

SQLServerでTOPを使用する方法

分類Dev

WHERE句でTOP1条件をフィルタリングする方法

Related 関連記事

  1. 1

    SQL ServerのTOP(@x)または単に「すべての」行を選択する方法(SET ROWCOUNTなし)

  2. 2

    keras高密度レイヤーのtop-k要素を選択する方法は?

  3. 3

    DELETE TOP(X)ステートメントが前のSELECT TOP(X)が返したのと同じレコードを削除しないのはなぜですか?

  4. 4

    ベクトルまたは配列から最も一般的な数値を選択する方法(TOP5トップリスト)C ++

  5. 5

    クエリの選択句でTopを使用してDistinctを使用する

  6. 6

    集計/グループを使用したクエリでTOP1を選択するT-SQL

  7. 7

    特定の合計になるtop-x要素を取得する方法

  8. 8

    Xcodeサイズインスペクタータブで選択した要素の制約をすばやく削除する簡単な方法はありますか?

  9. 9

    空の列でORDERBYを使用したTOP1の結果セットがTOP5とは異なる結果を表示するのはなぜですか?

  10. 10

    imgタグがmargin-topプロパティを受け入れるのはなぜですか?

  11. 11

    アクセスのクエリでLIMITを使用するが、TOPは使用しない方法

  12. 12

    PostgresでTOPレコードを選択する方法。同様の質問ではありません

  13. 13

    JQueryで、要素全体ではなくボタンをクリックするだけでli要素を削除するにはどうすればよいですか?

  14. 14

    cssの「left」属性と「top」属性の両方でdiv要素を見つける方法はありますか?

  15. 15

    top =前の兄弟のbottomの場合、JQueryは要素からクラスを削除します

  16. 16

    / app / top /のValueError

  17. 17

    クエリからMSSQL TOP句を削除して、SQLiteで機能させる方法

  18. 18

    jQueryで、ドキュメントではなく親を基準にした位置値を持つ要素の「top、left」プロパティを設定するにはどうすればよいですか?

  19. 19

    データベースから複数のtop3を選択します

  20. 20

    top_n()nを選択しない

  21. 21

    <small>タグにmargin-topを適用する方法は?

  22. 22

    top = $ this.css( "top")は、オブジェクトと要素の値を返します

  23. 23

    テーブルをフィルタリングし、Daxで1つのTOP行に制限する方法

  24. 24

    選択したアイテムをリストボックスだけでなくデータベースからも削除します

  25. 25

    Entity Frameworkを使用して、リスト内のFKごとにTOP1を選択します

  26. 26

    ReactTableのページ付けにカスタム要素を追加します-top

  27. 27

    SELECT TOPを使用すると変換に失敗しましたが、すべての行を選択するとエラーは発生しません

  28. 28

    SQLServerでTOPを使用する方法

  29. 29

    WHERE句でTOP1条件をフィルタリングする方法

ホットタグ

アーカイブ