javascript - 在 FOR 循环的特定元素上启动事件函数

标签 javascript

如何将“颜色”功能仅应用于受“鼠标悬停”影响的元素。

    var els = document.getElementsByClassName("issue-link");
    var colors = ["red","green","orange","yellow","satin","grey","purple","brown","sky-blue","dark-green"];
    var message = "<p>Hello!</p>";

    function color() {
    for (i = 0; i < els.length; i++) {
        var colorNr = Math.floor(Math.random() * 9);
        els[i].innerHTML = message;
        els[i].style.color = colors[colorNr];
        }
    }

for (i = 0; i < els.length; i++) {
    els[i].onmouseover = color;
}

最佳答案

在函数中,您 Hook 事件的元素可用作 this。所以:

function color() {
    this.innerHTML = message;
    this.style.color = colors[Math.floor(Math.random() * colors.length)];
}

实例:

var els = document.getElementsByClassName("issue-link");
var colors = ["red", "green", "orange", "yellow", "satin", "grey", "purple", "brown", "sky-blue", "dark-green"];
var message = "<p>Hello!</p>";

function color() {
  this.innerHTML = message;
  this.style.color = colors[Math.floor(Math.random() * colors.length)];
}

for (var i = 0; i < els.length; i++) {
  els[i].onmouseover = color;
}
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>
<div class="issue-link">link</div>


另请注意,如果不在循环中声明 i,您的代码就会成为 The Horror of Implicit Globals 的牺牲品。 (这是我贫血的小博客上的一篇文章)。声明您的变量。

另请注意我如何使用 colors.length 而不是硬编码的 9,这样,如果您向数组添加颜色,代码会自动处理它,而无需您手动操作将 9 更改为 10

关于javascript - 在 FOR 循环的特定元素上启动事件函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41964516/

相关文章:

javascript - OData中DateTimeOffset的格式

javascript - 如何在课后删除空元素?(jQuery)

javascript - 使用 querySelectorAll 获取选定的选项

javascript - 页面加载完成后 window.location 未导航到正确的位置

javascript - 在 javascript 中对使用相同类的元素重用相同的函数不起作用

javascript - 进度条隐藏页面直到页面完全加载

javascript - 我可以在用户单击链接后操作 DOM 吗?

javascript - 使用Javascript数组或JSON来存储AJAX请求的返回值以供以后使用

javascript - Enzyme 需要配置一个适配器,但没有找到

javascript - 如何使用 jQuery AJAX 处理 API 调用错误?