Как вернуть ID элемента вместо [object HTMLDivElement] (Prototype.js) - PullRequest
11 голосов
/ 23 февраля 2009

Я знаю, что это просто, но я не могу обернуть голову вокруг этого. В настоящее время следующий код возвращает «[object HTMLDivElement], [object HTMLDivElement]». Я бы хотел, чтобы он возвращал «div1, div2» Какие-нибудь мысли? Спасибо, ребята.

<HTML>
<HEAD>
<script type="text/javascript" src="path_to/prototype.js"></script>
<script>
function linkClick ()
{
    alert($$('div.basic'));
}
</script>
</HEAD>
<BODY>
   <div id="div1" class="basic" onclick="linkClick();"></div>
   <div id="div2" class="basic" onclick="linkClick();"></div>
</BODY>
</HTML>

Ответы [ 4 ]

21 голосов
/ 06 марта 2009

У меня была такая же проблема, есть простое решение:

Если varElement - это ваш объект, содержащий [HTMLDivElement] (или другой объект DOM), просто добавьте '.id'

, например

varElement.id 
4 голосов
/ 06 марта 2009

В прототипе есть оптимизация специально для этого:

$$('div.basic').pluck('id')

Если я правильно прочитал ваш вопрос, вам нужен список идентификаторов div, а не строка идентификаторов, разделенных запятой.

2 голосов
/ 23 февраля 2009
var ids = $$('div.basic').collect(function(el) { return el.id; }); //array of ids

alert(ids.join(','));

collect - это другое имя для map , которое позволяет вам преобразовывать элементы одного типа коллекции в другой тип, применяя функцию «селектор» к каждому.

1 голос
/ 23 февраля 2009
alert($$('div.basic').invoke('identify').join(',');

Вызов будет вызывать функцию по имени. Функция идентификации предоставит идентификатор. При вызове массива он возвращает массив своих идентификаторов. Join превращает их в строку с запятыми между ними.

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