2009-10-27 57 views
26

我有一个脚本,我动态地创建选择框。当创建这些框时,我们希望将新框的onchange事件设置为指向一个名为toggleSelect()的函数。如何通过javascript将onchange事件添加到选择框?

我似乎无法获得创建onchange事件的语法权限。有人能告诉我我做错了什么吗?它不会抛出错误,但不起作用。

col = dataRow.insertCell(0); 
    var transport_select = document.createElement('select'); 
    transport_select.id = transport_select_id; 
    transport_select.options[0] = new Option('LTL', 'LTL'); 
    transport_select.options[1] = new Option('FTL', 'FTL'); 
    transport_select.onChange = function(){toggleSelect(transport_select_id);}; 
    col.appendChild(transport_select); 

回答

25

添加

transport_select.setAttribute("onchange", function(){toggleSelect(transport_select_id);}); 

setAttribute

或尝试用onchange

+3

谢谢!将它从“onChange”更改为“onchange”修复了它。 – user77413 2009-10-27 05:03:54

+1

某些版本的IE已知有setAttribute问题,因此transport_select.onchange = function(){...}方法似乎更安全;) – lucaferrario 2012-11-21 19:26:38

34

更换onChange下面是基于W3C DOM Level 2 Events Specification连接事件的另一种方式:

transport_select.addEventListener(
    'change', 
    function() { toggleSelect(this.id); }, 
    false 
); 
8

取代:

transport_select.onChange = function(){toggleSelect(transport_select_id);}; 

用:对 'ç '焊割

transport_select.onchange = function(){toggleSelect(transport_select_id);}; 

上' ç' 焊割>>


您也可以使用addEventListener

1

如果你正在使用的prototype.js,那么你可以这样做:

transport_select.observe('change', function(){ 
    toggleSelect(transport_select_id) 
}) 

这消除(如希望)的问题跨浏览器

相关问题