Javascript 将对象HTMLInputElement作为参数传递给函数

Javascript 将对象HTMLInputElement作为参数传递给函数,javascript,jquery,Javascript,Jquery,我试图在没有任何运气的情况下将DOM元素传递给函数。FireBug报告了以下问题: SyntaxError: missing ] after element list LlenarDetalleReserva([object HTMLInputElement]); return false; 选择器需要在创建时动态添加一些属性 我尝试了以下方法: $('#mySelector').attr({'onkeydown' : 'intOrFloat(event,this.value);', 'onc

我试图在没有任何运气的情况下将DOM元素传递给函数。FireBug报告了以下问题:

SyntaxError: missing ] after element list
LlenarDetalleReserva([object HTMLInputElement]); return false;
选择器需要在创建时动态添加一些属性

我尝试了以下方法:

$('#mySelector').attr({'onkeydown' : 'intOrFloat(event,this.value);', 'onchange' : 'LlenarDetalleReserva('+ $.trim($('#cant_r_'+ vectorid[2])[0]) +'); return false;'});
我错过了什么?是什么导致了这个错误


提前谢谢。

请不要这样做。用于将事件绑定到元素。不要直接将其设置为属性

$('#mySelector')
    .on('keydown', function(event) 
    {
        intOrFloat(event, this.value);
    })
    .on('change', function(event) 
    {
        if (vectorid && vectorid[2] != undefined)
        {
            var element = $('#cant_r_'+ vectorid[2]);

            if (element.length > 0)
            {
                LlenarDetalleReserva(element); 
            }
        }

        return false;
    });
上面的代码(如果s,则充满了
)是为了避免在运行时出现异常。这就是我在你的情况下会做的。此外,我不知道您在
$.trim()
函数中想要得到什么,但似乎您想要获取元素并将其作为字符串传递。在上面的代码中,它是通过引用传递的

更新:


为了回答OP提出的为什么我不应该直接设置属性的问题,我没有告诉你不能直接添加属性,只能添加as属性。我不能告诉你在引擎的背景中会发生什么,所以实际上,它可以添加as属性。但这不是最佳实践,也是方法的一部分。

为什么要使用attr设置onkeydown和onchange
$('#mySelector')。on('keydown',function(){})。on('change',function(){})
$('#mySelector')。on({keydown:function(){},change:function(){})它们不应该是属性。一半的问题是字符串中有JS,因此您无法轻松看到语法错误。除了
[object HTMLInputElement]
字符串之外,在
$中应该有什么内容。trim($(''cant_r_'+vectorid[2])[0])
?它不应该是
$.trim($('cant______'+vectorid[2])[0].value)
实际上吗?请说明
vectorid
是如何创建的或它包含的内容的转储,以及函数
LlenarDetalleReserva
poploane,我很乐意提供一些关于如何更改它的反馈或建议(关于attr()):)raina77ow,这是我想作为参数传递的DOM元素
对象HTMLInputElement
@EntiendNull好的,我在注释中给出了建议/正确的方法。只要花一分钟阅读这一页好吧,这工作几乎完美。我对你的代码做了一些修改。我应该用代码编辑您的示例吗?$.trim()只是在这里寻找解决方案的一次不顾一切的尝试。你能解释一下为什么我不应该直接设置属性吗!谢谢@我已经看到了你的更新代码。伙计,不要像在元素选择器中那样直接使用数组。如果返回空,您将得到一个运行时错误。谢谢您的输入。但是,由于选择器是动态的,我认为这里没有其他方法?