通过这样做,我已经能够成功地获得另一个元素 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);
};
编辑回复: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/