通过这样做,我已经能够成功获得另一个元素onclick函数:
document.getElementById(this.options[this.selectedIndex].text).getAttribute('onclick')
这给了我确切的文本,我想把它放在onchange事件的不同元素中,所以我想我可以这样做:
<select onchange="document.getElementById(this.options[this.selectedIndex].text).getAttribute('onclick')">
但这不起作用。有没有人有任何想法,我很难过!非常感谢提前!
答案 0 :(得分:3)
您不能只将函数转储到这样的属性中。我建议你开始写unobtrusive JavaScript。
<select id="mySelect">
<!-- snip -->
</select>
var select = document.getElementById('mySelect');
select.onchange = function () {
var id = this.options[this.selectedIndex].text,
clickHandler = document.getElementById(id).onclick;
clickHandler.apply(this);
};
“是否有一种简单的方法可以将其应用于页面上的所有选择?”
当然有!但是你需要注意不要在循环中创建函数(它不起作用)。
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]);
}
答案 1 :(得分:0)
我没有测试过这个,但也许:
var handler = document.getElementById(this.options[this.selectedIndex].text).getAttribute('onclick');
var selectEl = document.getElementsByTagName('select')[indexOfSelect];
selectEl.setAttribute('onClick',handler);
以下作品(除了在select
元素上使用'onFocus'属性外,或多或少与上述相同):
var handler = document.getElementById('first').getAttribute('onclick');
var selectEl = document.getElementsByTagName('select')[0];
selectEl.setAttribute('onfocus',handler);
答案 2 :(得分:0)
这不是推荐的,而是最简单的修复方法,
<select onchange="function() {document.getElementById(this.options[this.selectedIndex].text).getAttribute('onclick')();}">