gpt4 book ai didi

Javascript 在循环中将参数传递给 addeventListener 函数

转载 作者:行者123 更新时间:2023-12-02 18:24:06 25 4
gpt4 key购买 nike

此代码将把循环创建的最后一个值传递给 eventListener 函数,我需要附加创建 eventListener 时的值。

window.onload = function() {

var el = document.getElementsByClassName('modify');

for (var i = 0; i < el.length; i++) {

var getId=el[i].id.split("_");

document.getElementById("modify_y_"+getId[2]).addEventListener('mouseover', function() {
document.getElementById("modify_x_"+getId[2]).style.borderBottom = '#e6665 solid 3px';
}, false);

}
}

最佳答案

您可以使用现代浏览器中所有函数中都存在的bind原型(prototype)

window.onload = function() {

var el = document.getElementsByClassName('modify');

for (var i = 0; i < el.length; i++) {

var getId=el[i].id.split("_");

document.getElementById("modify_y_"+getId[2]).addEventListener('mouseover', function(theid) {
document.getElementById("modify_x_"+getId[2]).style.borderBottom = '#e6665 solid 3px';
}.bind(null,getId[2]), false);

}
}

如果您需要支持未内置 bind 的旧版浏览器,您可以使用此 poly-fill taken from MDN您还可以在其中找到有关绑定(bind)原型(prototype)函数的文档

if (!Function.prototype.bind) {
Function.prototype.bind = function (oThis) {
if (typeof this !== "function") {
// closest thing possible to the ECMAScript 5 internal IsCallable function
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
}

var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
fNOP = function () {},
fBound = function () {
return fToBind.apply(this instanceof fNOP && oThis
? this
: oThis,
aArgs.concat(Array.prototype.slice.call(arguments)));
};

fNOP.prototype = this.prototype;
fBound.prototype = new fNOP();

return fBound;
};
}

关于Javascript 在循环中将参数传递给 addeventListener 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com