提问人:Kristijan Pehar 提问时间:3/30/2023 最后编辑:DarkBeeKristijan Pehar 更新时间:3/30/2023 访问量:88
HTML 和 javascript 的星级评定顺序不正确
Star rating with html and javascript is not working in the right order
问:
我尝试使用 HTML 和 JavaScript 创建星级评定系统,但它无法正常运行。
它不是从左到右工作,而是以相反的方向工作 - 从右到左。例如,如果我点击第四颗星星,它将从右到左而不是从左到右着色四颗星星,这样第一颗星星就会保持无色状态。
任何人都可以就如何纠正此问题提出建议吗?
function fillStars(num) {
for (var i = 1; i <= 5; i++) {
var star = document.getElementById('star' + i.toString());
if (i <= num) {
star.checked = true;
} else {
star.checked = false;
}
}
}
.rating {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.rating input[type="radio"] {
display: none;
}
.rating label {
font-size: 60px;
margin-right: 10px;
cursor: pointer;
}
.rating label::before {
content: "\2606";
display: inline-block;
width: 1.1em;
text-align: center;
}
.rating label.checked::before {
content: "\2605";
color: gold;
}
.rating label.checked~label::before {
content: "\2605";
color: gold;
}
.rating input[type="radio"]:checked {
content: "\2605";
color: gold;
}
.rating input[type="radio"]:checked~label::before {
content: "\2605";
color: gold;
}
<div class="form-name">
<fieldset class="rating">
<legend>Bewertung:</legend>
<input type="radio" id="star1" name="rating" value="1" onclick="fillStars(1)" />
<label for="star1" title="1 Stern"></label>
<input type="radio" id="star2" name="rating" value="2" onclick="fillStars(2)" />
<label for="star2" title="2 Sterne"></label>
<input type="radio" id="star3" name="rating" value="3" onclick="fillStars(3)" />
<label for="star3" title="3 Sterne"></label>
<input type="radio" id="star4" name="rating" value="4" onclick="fillStars(4)" />
<label for="star4" title="4 Sterne"></label>
<input type="radio" id="star5" name="rating" value="5" onclick="fillStars(5)" />
<label for="star5" title="5 Sterne"></label>
</fieldset>
</div>
答:
0赞
Hitesh Padhara
3/30/2023
#1
请替换css中的以下代码:
.rating {
display: flex;
flex-direction: row-reverse;
justify-content: center;
align-items: center;
}
希望这能解决您的问题。
0赞
Robo Robok
3/30/2023
#2
首先,你的循环没有多大意义,因为只能检查组中的一个元素。您可以完全删除此代码段。标签足以使正确的无线电元素可点击。for
radio
然后,您需要考虑 CSS。您希望将选中的无线电元素之后的所有内容都设置为空星形,因此输入需要在星形之后进行。
评论
flex-direction: row-reverse;