【发布时间】:2021-02-13 01:46:14
【问题描述】:
我正在尝试执行一个函数并使用相同的事件更改一个 HTML 图标。基本上我所做的是添加一个带有空星图或全星图的图标,具体取决于星号旁边的项目是否是“最喜欢的”:
<i class="${starStatus} fa-star"></i>
并附加一个点击事件:
$('i').click(User.toggleFavorite)
执行一个函数。该函数的目的是将最接近星形的故事添加到收藏夹数据库,然后将星形更改为填充(如果收藏)或清空(如果不收藏)。我无法弄清楚如何更改事件目标的 HTML 以使其填充或清空。这是有问题的功能:
static async toggleFavorite(evt){
let star = (evt.target.closest('i'))
const storyToFavoriteId = evt.target.closest('li').id
let storyToToggle = await axios.get(`${BASE_URL}/stories/${storyToFavoriteId}`)
storyToToggle = storyToToggle.data.story
const isStoryAFavorite = User.checkIfFavorite(storyToToggle);
if(isStoryAFavorite){
//change the star to empty <i class="$far fa-star"></i>
} else {
//change the star to be filled: <i class="$fas fa-star"></i>
}
}
真正重要的部分是底部的 if/else 语句。更改 innerHTML 只会添加额外的星号,即使在我将其设置为 '' 之后也是如此。有人有什么想法吗?
谢谢!
【问题讨论】:
标签: javascript html icons toggle