javascript - 如何复制另一个元素的onclick函数

标签 javascript html dom-events

通过这样做,我已经能够成功地获得另一个元素 onclick 功能:

document.getElementById(this.options[this.selectedIndex].text).getAttribute('onclick')

这给了我想要放入不同元素 onchange 事件中的确切文本,所以我想我可以这样做:

<select onchange="document.getElementById(this.options[this.selectedIndex].text).getAttribute('onclick')">

虽然这不起作用。有没有人有任何想法,我很难过?

最佳答案

你不能像那样将一个函数转储到一个属性中。我建议你开始写 unobtrusive JavaScript .

HTML

<select id="mySelect">
    <!-- snip -->
</select>

JavaScript

var select = document.getElementById('mySelect');
select.onchange = function () {
    var id = this.options[this.selectedIndex].text,
        clickHandler = document.getElementById(id).onclick;
    clickHandler.apply(this);
};

Demo →


编辑回复:OP 的评论

"Is there an easy way to apply this to all the selects on the page?"

当然有!但是您需要注意不要在循环中创建函数(它不会起作用)。

var selects = document.getElementsByTagName('select'),
    numSelects = selects.length,
    i;

function setClickHandler(element) {
    element.onchange = function () {
        var id = this.options[this.selectedIndex].text,
            clickHandler = document.getElementById(id).onclick;
        clickHandler.apply(this);
    }
}

for (i=0; i<numSelects; i++) {
    setClickHandler(selects[i]);
}

关于javascript - 如何复制另一个元素的onclick函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5223766/

相关文章:

jquery - 多个元素与折叠的全宽按钮内联(Bootstrap)

javascript - 事件发生后删除 JavaScript 中的 EventListener?

javascript - 获取父属性,它是钛中子元素的表

javascript - Safari 和 IE 面临 "field must be date"问题

javascript - 按数组内容过滤/选择 javascript 对象

javascript - 将javascript添加到wordpress页面

html - 当鼠标光标离开导航父项时子菜单消失

javascript - 在 Android Stock 浏览器中的链接上使用 click() 不起作用

javascript - 如何为子域设置谷歌分析选择退出 cookie

javascript - 使用 knockout 创建的 jquery 选择选项