Как извлечь элемент с помощью getElementById, а затем расширить его для использования методов Prototype? - PullRequest
2 голосов
/ 19 декабря 2011

У меня есть элемент ввода с идентификатором billing:postcode. Селектор Prototype $ () не может выбрать этот элемент, как описано в this ticket .

Я нашел это решение для той же проблемы в jQuery. Я не могу заставить его работать в 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 Ответ

3 голосов
/ 19 декабря 2011

Ваш Element.extend(element); работает, хотя самый распространенный способ - просто пропустить его через $():

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

Но обратите внимание, что отдельные элементы не имеют прототипа invoke метод, который является реальной проблемой, с которой вы сталкиваетесь.:-) invoke является частью Enumerable, которая применяется только к спискам элементов, а не к отдельным - ее цель - вызвать данную функцию для каждого элемента в списке.Вместо того, чтобы вызывать invoke, просто вызовите функцию, которую вы пытаетесь вызвать напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...