javascript - 如何在鼠标悬停时将 innerHTML 添加到类中?

标签 javascript html

我想将 innerHTML 添加到我的类中,而当我将鼠标悬停在它上面时不更改文本。

例如我有一个列表 <p>带有 class="food"的元素,当我将其悬停时,我希望它从说“Chicken”变为“Chicken [EAT]”。

这是我目前所拥有的,但是当我将鼠标悬停在段落上时,它会按预期更改为最后一个食品。

var food = document.getElementsByClassName("food");
var len = food.length;

for (i = 0; i < len; i++) {
  addEvent(food[i]);
  var foodName = food[i].innerHTML;

  function addEvent(food) {
    food.addEventListener("mouseover", function(event) {
      event.target.innerHTML = foodName + " [EAT]";
    });
  }
}
<p class="food">Snackbar</p>
<p class="food">Apple</p>
<p class="food">Pear</p>
<p class="food">Chicken</p>
<p class="food">Peas</p>

最佳答案

首先在 addEvent 中移动 var foodName = food.textContent;

也不要在循环内声明函数(不是问题的原因,但不是好的做法)

同样使用 textContent 而不是 innerHTML

var food = document.getElementsByClassName("food");
var len = food.length;

function addEvent(food){
    var foodName = food.textContent;
    food.addEventListener("mouseover", function(event){
        event.target.textContent = foodName + " [EAT]";
    });
}

for( i = 0; i < len ; i++){
    addEvent(food[i]);   
}
<p class="food">Snackbar</p>
<p class="food">Apple</p>
<p class="food">Pear</p>
<p class="food">Chicken</p>
<p class="food">Peas</p>

关于javascript - 如何在鼠标悬停时将 innerHTML 添加到类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58565627/

相关文章:

javascript - 在 javascript 数组中维护对 DOM 对象和/或 jQuery 对象的引用是个坏主意吗?

javascript - 在响应错误之前重试 async/await try 和 catch block 3 次

html - 在父级而不是直接在元素上设置字体大小如何影响垂直对齐?

javascript - 检查选择字段和输入字段

html - 如何在 Angular 中使用自定义管道将秒数转换并显示为年、月、日?

javascript - 使用 jQuery 切换多组元素的顺序

javascript - 如何使用jquery更改动态内容的类名

Javascript 拼接在 jQuery .each() 上中断了吗?

javascript - 如何创建返回间隔为 boolean 值+输入并打印的函数(number、from、to)

javascript - document.title 来自上一页?