本文档旨在解决在动态生成的HTML表格中实现星级评分时遇到的问题,重点讲解如何确保每个表格行中的星级评分组件独立工作,互不影响。通过修改HTML元素的id和name属性,使每个评分组件具有唯一标识符,从而实现独立评分功能。
在动态生成的HTML表格中,如果每个表格行中的星级评分组件的 id 和 name 属性都相同,那么当用户在某一行进行评分时,会影响到其他行的评分状态。这是因为浏览器无法区分这些具有相同 id 和 name 属性的元素,导致操作行为互相干扰。
为了解决这个问题,我们需要确保每个表格行中的星级评分组件的 id 和 name 属性都是唯一的。一种常见的做法是将事件名称(或者其他能够唯一标识每一行的属性)添加到 id 和 name 属性中,从而区分不同的评分组件。
以下是如何修改JavaScript代码,以确保每个评分组件的 id 和 name 属性都是唯一的:
$(document).ready(function () { function addData() { var eventname = $("#eventname").val(); var eventdate = $("#eventdate").val(); var eventloc = $("#eventloc").val(); var eventauthor = $("#eventauthor").val(); var eventdesc = $("#eventdesc").val(); if (eventname.trim() === '' || eventdate.trim() === '' || eventloc.trim() === '' || eventauthor.trim() === '' || eventdesc.trim() === '') { alert("Bitte füllen Sie alle Felder aus"); return; } if (!isValidDate(eventdate)) { alert("Datum muss folgendem Format entsprechen: dd.mm.yyyy ein"); return; } // Validierung und Hinzufügen zur Tabelle $(".table tbody tr").last().after( '
' + ' ' ); function isValidDate(dateString) { var regex = /^\d{2}\.\d{2}\.\d{4}$/; return regex.test(dateString); } } // Eventlistener für den Button $('#addData').click(addData); $('.table').on('click', '.like-button', function () { $(this).toggleClass('liked'); if ($(this).hasClass('liked')) { $(this).text('Gefällt mir nichtmehr'); $(this).closest('tr').addClass('liked-event'); } else { $(this).text('Gefällt mir'); $(this).closest('tr').removeClass('liked-event'); } }); });' + ' ' + eventname + ' ' + '' + eventdate + ' ' + '' + eventloc + ' ' + '' + eventdesc + ' ' + '' + eventauthor + ' ' + '' + ' ' + '
在上面的代码中,我们将 eventname 添加到了每个评分组件的 id 和 name 属性中。例如,id 变成了 eventname5,name 变成了 eventnameRate。 这样,每个事件的评分组件都有了唯一的标识符,从而实现了独立的评分功能。
以下是HTML和CSS代码,这些代码无需修改,因为问题主要在于JavaScript代码中动态生成的元素的 id 和 name 属性的冲突。
Eventüberblick
Überblick
Event erstellen
Neues Event
Eventliste
| All | Eventname | Eventdatum | Eventort | Eventbeschreibung | Eventautor |
|---|---|---|---|---|---|
*{
margin: 0;
padding: 0;
}
.rate {
float: left;
height: 46px;
padding: 0 10px;
}
.rate:not(:checked) > input {
position:absolute;
top:-9999px;
}
.rate:not(:checked) > label {
float:right;
width:1em;
overflow:hidden;
white-space:nowrap;
cursor:pointer;
font-size:30px;
color:#ccc;
}
.rate:not(:checked) > label:before {
content: '★ ';
}
.rate > input:checked ~ label {
color: #ffc700;
}
.rate:not(:checked) > label:hover,
.rate:not(:checked) > label:hover ~ label {
color: #deb217;
}
.rate > input:checked + label:hover,
.rate > input:checked + label:hover ~ label,
.rate > input:checked ~ label:hover,
.rate > input:checked ~ label:hover ~ label,
.rate > label:hover ~ input:checked ~ label {
color: #c59b08;
}通过确保动态生成的HTML表格中每个星级评分组件的 id 和 name 属性的唯一性,可以有效地解决评分组件互相干扰的问题。 这种方法简单易行,能够快速地实现独立的评分功能。在实际开发中,可以根据具体的需求选择合适的唯一标识符,并注意代码的维护和更新。