
index.wxml
<view class="star-rating" bind:tap="clickstar">
<block wx:for="{{stars}}" wx:key="index">
<image src="{{item.type === 'filled' ? '/images/stars_select.png' : '/images/stars_unselect.png'}}" mode="aspectFit" class="star"></image>
</block>
</view>
index.wxss
.star-rating {
display: flex;
justify-content: space-between;
width: 200px; /* 根据需要调整宽度 */
}
.star {
width: 30px; /* 星星宽度 */
height: 30px; /* 星星高度 */
}
index.js
Page({
data: {
totalStars: 6, // 总星星数
score: 20, // 当前成绩(0-6)
stars: [] // 星星数组
},
onLoad: function(options) {
// 初始化星星状态,默认全为灰色
const initialStars = Array.from({ length: this.data.totalStars }, () => ({
type: 'gray'
}));
this.setData({ stars: initialStars });
},
//点击设置显示高亮的星星
clickstar(e){
this.updateStars(3);
},
/**
* 更新星星状态根据成绩
* @param {Number} newScore - 新的成绩(0-6)
*/
updateStars: function(newScore) {
if (newScore < 0 || newScore > this.data.totalStars) {
console.error('成绩超出范围');
return;
}
const updatedStars = this.data.stars.map((star, index) => {
return {
type: index < newScore ? 'filled' : 'gray'
};
});
this.setData({
score: newScore,
stars: updatedStars
});
}
});