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

时间:2014-07-04 15:47:58

标签: javascript jquery

我试图将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;'});

我在这里缺少什么?产生这个错误的原因是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

请不要那样做。使用on()将事件绑定到元素。切勿直接将其设置为属性。

$('#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;
    });

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

<强>更新

为了回答OP的问题为什么我不应该直接设置属性我没有告诉你,你不能直接添加属性,而是event handler属性。我不知道在引擎的背景中会发生什么,所以事实上,它可以添加作为属性。但这不是最佳做法,而是Unobtrusive方法的一部分。