Beispiel:ToDo-2.html

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche
<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ToDo-Liste - 2</title>
  <link rel="stylesheet" media="screen" href="./Beispiel:Grundlayout.css">  
<style>
ol {list-style-type:none;}

li {
	width: 20em;
	display: grid;
	grid-template-columns: 1.5em 1fr 1.5em;
	margin: 0;
	background: gainsboro;
	border: thin solid grey;
	
	span {
	  grid-column: 2/-2;
	  grid-row: 1/2;
	  padding: 0.5em;
	}	
	button {
		background: transparent;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 560'%3E%3Cpath id='handle' style='fill:none;stroke:red;stroke-width:25;stroke-linejoin:round;stroke-linecap:round;'%0Ad='m150,160 v-40 h150 v40'/%3E%3Crect x='45' y='200' rx='10' style='fill:none; stroke:red;stroke-width:25' width='365' height='80'/%3E%3Cpath style='fill:none;stroke:red;stroke-width:25;stroke-linejoin:round;stroke-linecap:round;'%0Ad='m80,280 l40,280 h220 l40,-280 m-235,75 l15,160 m70,0 v-160 m80,0 l-15,160'/%3E%3C/svg%3E%0A");
		background-repeat: no-repeat;
		background-size: contain;
		border: none;
		padding: 0;
		margin: 0;
		width: 1.5rem;
		aspect-ratio: 1/1;
		font-size: 0;
		color:transparent;
		grid-column: -2/-1;
		grid-row: 1/2;
	}	
}

li:first-of-type {
  border-radius: var(--border-radius) var(--border-radius) 0 0;
}
li:last-of-type {
  border-radius: 0 0 var(--border-radius) var(--border-radius);
}

fieldset[disabled] {border:none; background: #ccc; color: #666; font-style:italic; width:22em;}

:root {
	--border-radius: 0.5em;
	--base: blue;
}
</style>
<script>
'use strict';
document.addEventListener('DOMContentLoaded', function () {
  const taskList = document.querySelector('#taskList');
  const newTaskInput = document.querySelector('#newtask');
  const addButton = document.querySelector('#add');

  let taskIdCounter = 0; // Counter zum Erzeugen eindeutiger IDs

  addButton.addEventListener('click', function () {
    const task = "Dies ist ein neuer Listeneintrag!" //newTaskInput.value.trim(); 

    if (task === '') {
      alert('Bitte gib eine Aufgabe ein.'); 
      return;
    }

    // Create a unique ID for the task
    const taskId = `todo-${taskIdCounter++}`;

    taskList.insertAdjacentHTML('beforeend', `
       <li id="${taskId}">
          <span class="text">${task}</span>
          <button aria-label="Delete task: ${task}" class="delete-button">Löschen</button>
        </li>
    `);

    newTaskInput.value = '';
  });

  taskList.addEventListener('click', function (event) {
    if (event.target.classList.contains('delete-button')) {
      const taskItem = event.target.closest('li');
      taskItem.remove();
    }
  });
});

 
</script>  
</head>
 
<body>
  <h1>ToDo-Liste - 2</h1>

<form id="controls"> 
	<fieldset disabled>
  <label for="newtask">Neues Vorhaben:</label>
	<input id="newtask" placeholder="Dies ist ein neuer Listeneintrag!" size="28">
  </fieldset>

	<button type="button" id="add">Hinzufügen!</button>
</form>	
<ol id="taskList">
          <li>
              <span class="text">Im Wiki aktiv werden!</span>
            <button aria-label="Delete task: ${task}" class="delete-button">Löschen</button>
          </li>
          <li>
              <span class="text">Für <a href="https://wiki.selfhtml.org/wiki/SELFHTML:Verein/Spenden">SELFHTML spenden</a>!</span>
            <button aria-label="Delete task: ${task}" class="delete-button">Löschen</button>
          </li>
</ol>

</body>
</html>