
本文档旨在解决在动态生成的HTML表格中,为每个元素实现独立的星级评分功能的问题。通过修改JavaScript代码,确保每个事件的评分选项具有唯一的ID和名称,从而避免评分冲突,实现对每个表格行中元素的独立评分。本文将提供修改后的代码和详细的解释,帮助开发者轻松实现这一功能。
问题分析
在动态生成的HTML表格中,如果每个元素的星级评分选项使用相同的id和name属性,会导致评分功能出现问题。具体来说,当用户为一个元素评分时,由于id和name冲突,其他元素的评分也会受到影响,无法实现独立的评分功能。
解决方案
要解决这个问题,需要确保每个元素的星级评分选项具有唯一的id和name属性。这可以通过在动态生成HTML代码时,将事件名称或其他唯一标识符添加到id和name属性中来实现。
代码实现
以下是修改后的JavaScript代码,其中关键部分在于addData函数中动态生成HTML表格行的部分:
立即学习“前端免费学习笔记(深入)”;
$(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 fllen Sie alle Felder aus"); return; } if (!isValidDate(eventdate)) { alert("Datum muss folgendem Format entsprechen: dd.mm.yyyy ein"); return; } // Validierung und Hinzufgen zur Tabelle $(".table tbody tr").last().after( '' + ' ' + '' + eventname + ' ' + '' + eventdate + ' ' + '' + eventloc + ' ' + '' + eventdesc + ' ' + '' + eventauthor + ' ' + ' ' + ' ' + ' ' ); function isValidDate(dateString) { var regex = /^\d{2}\.\d{2}\.\d{4}$/; return regex.test(dateString); } } // Eventlistener fr 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'); } });});
在上述代码中,id和name属性被修改为:
这样,每个事件的星级评分选项都具有唯一的id和name,避免了冲突。
完整代码示例
以下是完整的HTML、CSS和JavaScript代码示例:
HTML (index.html):
Eventüberblick Überblick Event erstellen Neues Event
Eventliste
All Eventname Eventdatum Eventort Eventbeschreibung Eventautor Like Bewertung
CSS (style.css):
*{ 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;}
JavaScript (script.js):
$(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 fllen Sie alle Felder aus"); return; } if (!isValidDate(eventdate)) { alert("Datum muss folgendem Format entsprechen: dd.mm.yyyy ein"); return; } // Validierung und Hinzufgen zur Tabelle $(".table tbody tr").last().after( '' + ' ' + '' + eventname + ' ' + '' + eventdate + ' ' + '' + eventloc + ' ' + '' + eventdesc + ' ' + '' + eventauthor + ' ' + ' ' + ' ' + ' ' ); function isValidDate(dateString) { var regex = /^\d{2}\.\d{2}\.\d{4}$/; return regex.test(dateString); } } // Eventlistener fr 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变量的值是唯一的,以便为每个事件生成唯一的id和name。可以根据实际需求修改id和name的生成方式,例如使用时间戳或其他唯一标识符。在实际应用中,可能需要将评分数据存储到服务器端,以便持久化存储。
总结
通过为动态生成的HTML表格中的每个元素的星级评分选项生成唯一的id和name属性,可以有效地解决评分冲突问题,实现独立的评分功能。本文提供的代码示例和解释可以帮助开发者轻松实现这一功能,并根据实际需求进行修改和扩展。
以上就是在HTML表格中为动态生成元素实现星级评分功能的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1531278.html
微信扫一扫
支付宝扫一扫