我再次提出这个问题,但希望更清楚一点。有关详细信息,请参阅此主题
javascript error in IE8 compatibitlity mode
我在页面上有以下标记,我无法直接更改。我需要将从“change_option”调用的函数更改为“changeoption”。如何为每个选择框完成此操作。我没有显示选项,因为它们在这种情况下不相关。
<select onChange="change_option('SELECT___100E___7',this.options[this.selectedIndex].value)" name="SELECT___100E___7">
<select onChange="change_option('SELECT___123___6',this.options[this.selectedIndex].value)" name="SELECT___123___6">
<select onChange="change_option('SELECT___584E___52',this.options[this.selectedIndex].value)" name="SELECT___584E___52">
答案 0 :(得分:2)
这似乎相对简单:
$(document).ready(
function(){
$('select').each(
function(){
if ($(this).attr('onChange')) {
var onChangeString = $(this).attr('onChange').replace('change_option','changeoption');
$(this).attr('onChange',onChangeString);
}
}
);
}
);
我使用了以下(x)html(在<!DOCTYPE html>
下,在Ubuntu 10.10上使用Chrome和Firefox):
<form action="#" method="post">
<select onChange="change_option('SELECT___100E___7',this.options[this.selectedIndex].value)" name="SELECT___100E___7">
<option value="0">dummy option 1</option>
<option value="1">dummy option 2</option>
<option value="2">dummy option 3</option>
<option value="3">dummy option 4</option>
</select>
<select onChange="change_option('SELECT___123___6',this.options[this.selectedIndex].value)" name="SELECT___123___6">
<option value="0">dummy option 1</option>
<option value="1">dummy option 2</option>
<option value="2">dummy option 3</option>
<option value="3">dummy option 4</option>
</select>
<select onChange="change_option('SELECT___584E___52',this.options[this.selectedIndex].value)" name="SELECT___584E___52">
<option value="0">dummy option 1</option>
<option value="1">dummy option 2</option>
<option value="2">dummy option 3</option>
<option value="3">dummy option 4</option>
</select>
</form>
<小时/> 编辑添加了一个事后的想法:个人而言,我强烈建议从(x)html中删除
onChange
事件,并将所有行为逻辑放在一起,而不是让它遍布你的html页面(因为留下它会导致像 this 这样的情况,不得不操纵一大堆元素而不是在一个文件中重写一个函数。
如果你真的无法编辑html,你总是可以使用jQuery删除onChange
(和onClick
等)事件处理程序,并使用链接的js文件来接管它们的功能。
答案 1 :(得分:1)
$(document).ready(
function(){
$('select').each(
function(){
$(this).change(
function() {
changeoption(this.name,$(this).val());
}
).attr("onchange",function(){
changeoption(this.name,this.options[this.selectedIndex].value);
}
);
}
);
});