gpt4 book ai didi

javascript - 获取调用函数的当前元素?

转载 作者:行者123 更新时间:2023-12-03 11:38:14 25 4
gpt4 key购买 nike

我已将一个函数挂接到多个控件的同一事件:

element.onchange = SetSelected;

SetSelected中,我需要知道哪个元素调用了我。我错误地尝试执行以下操作:

element.onchange = SetSelected(element.id);

这当然调用的函数不是我想要的。

我想也许 this 关键字可以为我提供我想要的东西,但它没有(在 SetSelected 函数中)。

var element = this;

我没有使用 jquery,并且不想为这样一个琐碎的任务添加依赖项。

对于那些提出要求的人,这里是完整的示例:

var imageNumber = 12;
var elementId = "cphContent_rdoSelected";

window.onload = function () {
for (var i = 1; i <= imageNumber; i++) {
var element = document.getElementById(elementId + i.toString());

//select the first element by default
if (i === 1) {
SetSelected(element.id);
}
element.onchange = SetSelected;
}
};

function SetSelected() {
for (var i = 1; i <= imageNumber; i++) {
var radioButton = this;//document.getElementById(elementId + i.toString());

var lbl = document.getElementById("lbl" + i.toString());

if ( id === radioButton.id) {
if (!radioButton.hasAttribute("checked")) {
radioButton.setAttribute("checked","");
lbl.style.display = "block";
}
}
else {
if (radioButton.hasAttribute("checked")) {
radioButton.removeAttribute("checked");
}
lbl.style.display = "none";

}
}
};

最佳答案

如果您执行element.onchange = SetSelected;,则使用this将起作用。但是,您的问题似乎在于

if (i === 1) {
SetSelected(element.id);
}

这不起作用,因为 this 不会引用该元素,而是引用 window。您必须通过 .call.apply 显式设置 this:

if (i === 1) {
SetSelected.call(element);
}

了解的来源:

关于javascript - 获取调用函数的当前元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26390251/

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