[code=HTM] <script type="text/javascript"> function chufa(){alert('ok');} onload=function(){ var s = document.createElement("SELECT"); var opt = new Option("xx","xx"); s.options.add(opt); opt = new Option("ccc","ccc"); s.options.add(opt); s.onchange = chufa; document.body.appendChild(s); } </script>[/code]
var s = document.createElement("SELECT") ; s.onpropertychange = "chufa()" 这样试试
错了, var s = document.createElement("SELECT") ; s.onpropertychange = chufa; 这样试试
改成带参数的,只有第一次加载的时候有效果:<script type="text/javascript"> function chufa(a){alert(a);} onload=function(){ var s = document.createElement("SELECT"); var opt = new Option("xx","xx"); s.options.add(opt); opt = new Option("ccc","ccc"); s.options.add(opt); s.onchange = chufa("abc"); document.body.appendChild(s); } </script> 改成这样的用法:s.onpropertychange = chufa;只有IE有效,火狐没有反映!
还要可以穿参数。 我这样做的 var s = document.createElement("SELECT") ; s.onchange = "chufa()" ======= 如果参数固定的,你可以直接写在chufa函数体里。 如果参数变动的,你可以通过一个全局变量存放,在chufa函数体取它使用。 在s.onchange = "chufa()" 这句上作文章是不行的,就算写上参数,那个参数也是固定的,就算每次都传了,传的也都是最初设置时的那个值。
<script type="text/javascript">
function chufa(){alert('ok');}
onload=function(){
var s = document.createElement("SELECT");
var opt = new Option("xx","xx");
s.options.add(opt);
opt = new Option("ccc","ccc");
s.options.add(opt);
s.onchange = chufa;
document.body.appendChild(s);
}
</script>[/code]
s.onpropertychange = "chufa()"
这样试试
var s = document.createElement("SELECT") ;
s.onpropertychange = chufa;
这样试试
js函数不需要显示定义参数,可以用argument[0],arugment[1]....来获取参数!
function chufa(a){alert(a);}
onload=function(){
var s = document.createElement("SELECT");
var opt = new Option("xx","xx");
s.options.add(opt);
opt = new Option("ccc","ccc");
s.options.add(opt);
s.onchange = chufa("abc");
document.body.appendChild(s);
}
</script> 改成这样的用法:s.onpropertychange = chufa;只有IE有效,火狐没有反映!
我这样做的
var s = document.createElement("SELECT") ;
s.onchange = "chufa()"
=======
如果参数固定的,你可以直接写在chufa函数体里。
如果参数变动的,你可以通过一个全局变量存放,在chufa函数体取它使用。
在s.onchange = "chufa()" 这句上作文章是不行的,就算写上参数,那个参数也是固定的,就算每次都传了,传的也都是最初设置时的那个值。
所以想通过它来传递一个变化的参数是不可能的。必须通过其它方式(我上面说了)。
window.onload = function(){ /*
*desc 根据不同浏览器给元素添加事件
*parma object obj(要添加事件的对象)
*parma string eventname(要添加的事件名)
*parma string callback(回调函数名)
*return void
*/
var addEvent = function( obj, eventname, callback ){
//其他浏览器
if(window.addEventListener){
obj.addEventListener( eventname, callback, false );
}
//ie
else{
obj.attachEvent( 'on'+eventname, callback );
} return;
}
/*
*desc alert当前触发元素的id
*return void
*/
function callback(){
alert(this.id);
} /* 创建select元素并赋予其相应属性 */
var select = document.createElement("select");
select.id = "myselect";
select.name = "myselect"; /* 创建option元素并赋予其属性 */
var option = document.createElement("option");
option.value = "1";
option.innerHTML = "选项1";
//将次元素追加到select元素的子元素
select.appendChild(option); /* 创建option元素并赋予其属性 */
option = document.createElement("option");
option.value = "2";
option.innerHTML = "选项2";
//将次元素追加到select元素的子元素
select.appendChild(option); //给select标签添加事件
addEvent( select, 'change', callback ); //将select元素追加到body的子元素
document.body.appendChild(select);
}
</script>
<script type="text/javascript">//当文档加载完毕时
window.onload = function(){ /*
*desc 根据不同浏览器给元素添加事件
*parma object obj(要添加事件的对象)
*parma string eventname(要添加的事件名)
*parma string callback(回调函数名)
*return void
*/
var addEvent = function( obj, eventname, callback ){
//其他浏览器
if(window.addEventListener){
obj.addEventListener( eventname, callback, false );
}
//ie
else{
obj.attachEvent( 'on'+eventname, callback );
} return;
}
/*
*desc alert当前触发元素的id
*return void
*/
function callback(){
alert('当前选中项的值为:'+this.value+' 当前选中项的文字描述为:'+this.options[this.selectedIndex].text);
}
/* 创建select元素并赋予其相应属性 */
var select = document.createElement("select");
select.id = "myselect";
select.name = "myselect"; /* 创建option元素并赋予其属性 */
var option = document.createElement("option");
option.value = "1";
option.innerHTML = "选项1";
//将次元素追加到select元素的子元素
select.appendChild(option); /* 浅克隆一个option元素并赋予其属性 */
option = option.cloneNode(false);
option.value = "2";
option.innerHTML = "选项2";
//将次元素追加到select元素的子元素
select.appendChild(option);
//给select标签添加事件
addEvent( select, 'change', callback ); //将select元素追加到body的子元素
document.body.appendChild(select);
}</script>
<script type="text/javascript">window.onload = function(){
/*
*desc 根据不同浏览器给元素添加事件
*parma object obj(要添加事件的对象)
*parma string eventname(要添加的事件名)
*parma string callback(回调函数名)
*return void
*/
var addEvent = function( obj, eventname, callback ){ //其他浏览器
if(window.addEventListener){
obj.addEventListener( eventname, callback, false );
}
//ie
else{
obj.attachEvent( 'on'+eventname, callback );
} return;
}
/*
*desc alert当前触发元素的value和text
*return void
*/
var mychange = function( var1,var2 ){
//alert('当前选中项的值为:'+this.value+' 当前选中项的文字描述为:'+this.options[this.selectedIndex].text);
alert(var1+var2);
}
/* 创建select元素并赋予其相应属性 */
var select = document.createElement("select");
select.id = "myselect";
select.name = "myselect";
/* 创建或浅克隆10个option元素并赋予其属性 */
for(i=1;i<=10;i++){
if(i==1)
var option = document.createElement("option");
else
option = option.cloneNode(false);
option.value = i;
option.innerHTML = "选项"+i;
//将次元素追加到select元素的子元素
select.appendChild(option);
}
//给select标签添加事件
addEvent( select, 'change', function(){mychange('添加change事件,','并且能传参')} ); document.getElementsByTagName("body")[0].appendChild(select);
}
</script>