1

I want to be able to remove the input value but the following code in js does not work:

delette.addEventListener('click', ()=>{
  delette.remove();
})

html code

 <body>
        <div class="container">
            <div class="bg-image"></div>
            <h2 class="heading">Einkaufsliste</h2>
            <input type="text" placeholder="Materialien" onfocus="this.value=''" class="input-materialien">
            <button type="button" class="button">Hinzufügen</button>
            <div class="saved-list"></div>
            
            <a href="#" id = close>
                <i class = "fas fa-times"></i>
            </a>
        </div>
        <script src="funktion.js"></script>
    </body>

JS code

const input = document.querySelector('.input-materialien')
const list = document.querySelector('.saved-list')
const button = document.querySelector('.button')
const delette = document.getElementById('close')


button.addEventListener('click', ()=>{
    list.appendChild(delette)
    list.innerHTML = list.innerHTML + input.value;
    list.appendChild(document.createElement('br'))
})

delette.addEventListener('click', ()=>{
  delette.remove();
})
2
  • 1
    Did you get some errors? Commented Sep 6, 2021 at 21:07
  • I got nothing. The last lines of JS does not work but I got 2 answers which are very helpful Commented Sep 7, 2021 at 13:22

2 Answers 2

1

I hope I understood the task correctly.

Each time you create a new record, you must close the text and the delete button in a packaging element. This makes it much easier to delete the record by selecting the packaging element.

Each time you create a new record, you must place a listener on the item to be deleted. When clicked, it calls the "removeElement()" function which takes the parent element and removes it.

Example:

const input = document.querySelector('.input-materialien');
const list = document.querySelector('.saved-list');
const button = document.querySelector('.button');

button.addEventListener('click', () => {
    // Create elements DIV and SPAN
    // DIV is wrapped element
    // SPAN is delete element
    var div = document.createElement('div');
    var span = document.createElement('span');
    // Get Input Value
    var txt = document.createTextNode(input.value);

    span.innerHTML = '<i class="fas fa-times">x</i>';

    div.appendChild(span);
    div.appendChild(txt);

    list.appendChild(div);

    // Remove value from input
    input.value = '';

    // Add event listner to 'SPAN' element
    span.addEventListener('click', function () {
        removeElement(this);
    });
});

function removeElement(x) {
    x.parentNode.remove();
}
span {
    color: red;
    padding-right: 5px;
    cursor: pointer;
}
<div class="container">
    <div class="bg-image"></div>
    <h2 class="heading">Einkaufsliste</h2>

    <input type="text" placeholder="Materialien" onfocus="this.value=''" class="input-materialien">
    <button type="button" class="button">Hinzufügen</button>

    <div class="saved-list"></div>
</div>

Sign up to request clarification or add additional context in comments.

Comments

0

JS code

    const input = document.querySelector('.input-materialien')
    const list = document.querySelector('.saved-list')
    const button = document.querySelector('.button')
    const delette = document.getElementById('close')
    
    button.addEventListener('click', () => {

      let cln = delette.cloneNode(true);
      cln.innerHTML += input.value + '<br/>';
      list.appendChild(cln);

      cln.addEventListener('click', () => {
        cln.remove();
      })
      
      // an alternative to above "+ '<br/>'"
      // cln.appendChild(document.createElement('br'))
      
    })

    (function() {
    
        const input = document.querySelector('.input-materialien')
        const list = document.querySelector('.saved-list')
        const button = document.querySelector('.button')
        const delette = document.getElementById('close')
        
        button.addEventListener('click', () => {

          let cln = delette.cloneNode(true);
          cln.innerHTML += input.value + '<br/>';
          list.appendChild(cln);

          cln.addEventListener('click', () => {
            cln.remove();
          })
          
          // an alternative to above "+ '<br/>'"
          // cln.appendChild(document.createElement('br'))
          
        })

    })();
<body>
  <div class="container">
    <div class="bg-image"></div>
    <h2 class="heading">Einkaufsliste</h2>
    <input type="text" placeholder="Materialien" onfocus="this.value=''" class="input-materialien">
    <button type="button" class="button">Hinzufügen</button>
    <div class="saved-list"></div>

    <a href="#" id="close">
      <i class="fas fa-times"><span></span></i>
    </a>
  </div>
  <script src="funktion.js"></script>
</body>

1 Comment

Please add further details to expand on your answer, such as working code or documentation citations.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.