Удалить указанный основной элемент из div с другим идентификатором - PullRequest
0 голосов
/ 19 марта 2019

Я хочу удалить элемент кнопкой «X», но эти элементы имеют разные идентификаторы и уходят в бесконечность. Как я должен сделать? Я хочу удалить основной "Div". Ex. "черный список", потому что я хочу закрыть его, но не могу, потому что у него другой идентификатор.

Я знаю, в моей недавней функции "closefunc" удаляется больше элементов. Но я хочу удалить только один указанный элемент.

Я просто попробовал больше способов сделать это, но я застрял здесь, и я решил обратиться за помощью.

function closetab() {
  var tab = document.getElementById("listtab");
  tab.parentElement.removeChild(tab);
}

function closefunc() {
  var blackitems = document.getElementsByClassName("blacklisttab");
  for (var i = 0; i <= blackitems.length; i++) {
    var tab = document.getElementById("blacklisttab" + i);
    tab.remove(tab)
.fragment {
  font-size: 12px;
  font-family: tahoma;
  height: 20px;
  border: px solid blue;
  color: blue;
  display: block;
  box-sizing: border-box;
  text-decoration: none;
}

.fragment:hover {
  box-shadow: 2px 2px 5px rgba(0, 0, 0, .2);
}

#close {
  float: right;
  display: inline-block;
  padding: 1px 5px;
  font-weight: bold;
  cursor: pointer;
}

.bl {
  padding-bottom: 5px;
}

.closebtn {
  float: right;
  display: inline-block;
  padding: 1px 5px;
  font-weight: bold;
  cursor: pointer;
}


#closebutn {
  float: right;
  display: inline-block;
  padding: 1px 5px;
  font-weight: bold;
  cursor: pointer;
}
<div class="col-md-10 col-md-offset-1 bordered bl blacklisttab" id="blacklisttab0">
  <div class="col-md-10 bordered selectborder fragment" id="bltab">
    <span onclick="closetab();" class="closebtn">x</span>
    <div class="blacklistitem" id="blacklistitem">
      <p class="blacklistitempgraph" id="blacklistitempgraph0">DNFB</p>
    </div>
  </div>
</div>
<div class="col-md-10 col-md-offset-1 bordered bl blacklisttab" id="blacklisttab1">
  <div class="col-md-10 bordered selectborder fragment" id="bltab">
    <span onclick="closetab();" class="closebtn">x</span>
    <div class="blacklistitem" id="blacklistitem">
      <p class="blacklistitempgraph" id="blacklistitempgraph1">HIM</p>
    </div>
  </div>
</div>
<div class="col-md-10 col-md-offset-1 bordered bl blacklisttab" id="blacklisttab2">
  <div class="col-md-10 bordered selectborder fragment" id="bltab">
    <span onclick="closetab();" class="closebtn">x</span>
    <div class="blacklistitem" id="blacklistitem">
      <p class="blacklistitempgraph" id="blacklistitempgraph2">CFOs</p>
    </div>
  </div>
</div>
<div class="col-md-10 col-md-offset-1 bordered bl blacklisttab" id="blacklisttab3">
  <div class="col-md-10 bordered selectborder fragment" id="bltab">
    <span onclick="closetab();" class="closebtn">x</span>
    <div class="blacklistitem" id="blacklistitem">
      <p class="blacklistitempgraph" id="blacklistitempgraph3">Reduce</p>
    </div>
  </div>
</div>

1 Ответ

0 голосов
/ 19 марта 2019

Я бы предложил, после уточнения в комментариях, что вы, похоже, хотите удалить элементы-предки .blacklisttab при нажатии на элемент-потомок .closebtn:

// using a named function, in this case using Arrow syntax;
// passing in the event object ('e') from the (later)
// EventTarget.addEventListener() method:
const removeTab = (e) => {

  // retrieving the element that was clicked:
  let affected = e.target,

  // finding the closest ancestor element matching
  // the supplied CSS selector:
      ancestor = affected.closest('.blacklisttab');

  // removing that element from the DOM, using
  // ChildNode.remove():
  ancestor.remove();
}

// using document.querySelectorAll() to find all elements
// matching the supplied CSS selector, and calling
// NodeList.forEach() to iterate over that NodeList:
document.querySelectorAll('.closebtn').forEach(

  // using Arrow function expressions to bind the
  // removeTab() function (note the deliberate lack
  // of parentheses) as the event-handler for the
  // 'click' event:
  (close) => close.addEventListener('click', removeTab)
);

const removeTab = (e) => {
  let affected = e.target,
      ancestor = affected.closest('.blacklisttab');

  ancestor.remove();
}

document.querySelectorAll('.closebtn').forEach(
  (close) => close.addEventListener('click', removeTab)
);
.fragment {
  font-size: 12px;
  font-family: tahoma;
  height: 20px;
  border: px solid blue;
  color: blue;
  display: block;
  box-sizing: border-box;
  text-decoration: none;
}

.fragment:hover {
  box-shadow: 2px 2px 5px rgba(0, 0, 0, .2);
}

#close {
  float: right;
  display: inline-block;
  padding: 1px 5px;
  font-weight: bold;
  cursor: pointer;
}

.bl {
  padding-bottom: 5px;
}

.closebtn {
  float: right;
  display: inline-block;
  padding: 1px 5px;
  font-weight: bold;
  cursor: pointer;
}

#closebutn {
  float: right;
  display: inline-block;
  padding: 1px 5px;
  font-weight: bold;
  cursor: pointer;
}
<div class="col-md-10 col-md-offset-1 bordered bl blacklisttab" id="blacklisttab0">
  <div class="col-md-10 bordered selectborder fragment">
    <span class="closebtn">x</span>
    <div class="blacklistitem">
      <p class="blacklistitempgraph">DNFB</p>
    </div>
  </div>
</div>
<div class="col-md-10 col-md-offset-1 bordered bl blacklisttab" id="blacklisttab1">
  <div class="col-md-10 bordered selectborder fragment">
    <span class="closebtn">x</span>
    <div class="blacklistitem">
      <p class="blacklistitempgraph">HIM</p>
    </div>
  </div>
</div>
<div class="col-md-10 col-md-offset-1 bordered bl blacklisttab" id="blacklisttab2">
  <div class="col-md-10 bordered selectborder fragment">
    <span class="closebtn">x</span>
    <div class="blacklistitem">
      <p class="blacklistitempgraph">CFOs</p>
    </div>
  </div>
</div>
<div class="col-md-10 col-md-offset-1 bordered bl blacklisttab" id="blacklisttab3">
  <div class="col-md-10 bordered selectborder fragment">
    <span class="closebtn">x</span>
    <div class="blacklistitem">
      <p class="blacklistitempgraph">Reduce</p>
    </div>
  </div>
</div>

Обратите внимание, что ни при каких обстоятельствах не следует использовать один и тот же id для нескольких элементов. Имея это в виду, я удалил дубликаты id из ваших элементов, чтобы у вас остался правильный HTML.

Ссылки:

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