如何使用getElementById检索元素,然后将其扩展为使用Prototype方法?

时间:2011-12-19 09:33:52

标签: javascript prototypejs getelementbyid

我有一个标识为billing:postcode的输入元素。 Prototype $()选择器无法按this ticket

中所述选择此元素

我在jQuery中找到了同样问题的this解决方案。我不能让它在Prototype中工作。我试过了:

var element = document.getElementById('billing:postcode');
Element.extend(element);
element.invoke(...);

var element = document.getElementById('billing:postcode');
$(element).invoke(...);

两者都不起作用:Uncaught TypeError: Object #<HTMLInputElement> has no method 'invoke'

我知道我可以使用CSS选择器获取元素:

$$('#billing\\:postcode')

但我想使用getElementById

1 个答案:

答案 0 :(得分:3)

您的Element.extend(element);有效,但最常见的方法是将其传递给$()

var extended = $(document.getElementById('billing:postcode'));

但请注意,单个元素没有Prototype invoke方法,这是您遇到的真正问题。 :-) invokeEnumerable的一部分,它仅适用于元素列表,而不是单个元素列表 - 其目的是在列表中的每个元素上调用给定函数。而不是调用invoke,只需调用您尝试直接调用的函数。