Прототип функции различных элементов идентификатора одного и того же класса - PullRequest
0 голосов
/ 08 мая 2011

Я делаю этот скрипт-прототип для работы:

function removing () {
*var ids = $$('.class').collect(function(el) { return el.id; });* //array of ids, not used by now
var data = $$('.class').pluck('innerHTML');
var wanted_count = 10;
var output = cutHtmlString(data, wanted_count);
$$('.class').invoke('replace', output + '...');
}

для этой разметки:

<div class="class" id="id1">content 1</div>
<div class="class" id="id2>content 2</div>
<div class="class" id="id3>content 3</div>

cutHtmlString - это функция, которая вырезает строки html, сохраняя теги, и я хочу применитьэто к каждому другому содержанию div.Я создаю переменную 'data' (by innerHTML) из общего $$ (. Class) и затем выполняю резку по количеству слов (var wanted_count) в 'output' var.
В конце я заменяю исходный элемент (на$$. class) с новым содержимым вырезки.

Все прекрасно работает, за исключением одной проблемы: использование только $$ (class) делает только первым содержимым элемента, которое нужно рассмотреть и заменить всем остальным.
Мне нужно идентифицировать элементы также по идентификаторам, я думаю ... таким образом, я добавил закомментированную функцию к (собирать), но я не знаю, как присоединиться к моей цели ..

теперь я получил только эти результаты:

это содержимое первого класса 'div' * div ... (вырезать)
это содержимое первого класса'div ...
это содержимое первого класса' div '* ... 1022 *

, а я хочу получить:

это содержимоепервый div 'class' ...
это содержимое второго div 'class' ...
это содержимое третьего div 'class' ...

спасибо ребята и благодарность этому великому сообществу в целом

Ответы [ 2 ]

0 голосов
/ 09 мая 2011

Invoke работает только в том случае, если вы добавляете одинаковые переменные к каждому элементу.Вам нужно использовать each.Также я думаю, что вы хотите использовать update, а не replace.

попробуйте это.

function removing() {
  $$('.class').each(function(el){
    var output = cutHtmlString(el.innerHTML, 10);
    el.update(output + '...');
  });
}
0 голосов
/ 08 мая 2011

Я полагаю, что вы смешиваете работу над коллекцией элементов с работой над одним элементом. Прошло много времени с тех пор, как я работал в Prototype, но пытались ли вы работать очень индивидуально, поэтому выходные данные ограничиваются заменяемым элементом:

function removing () {
  var data, output, wanted_count = 10;

  $$('.class').each(function(element){
    output = cutHtmlString(element.innerHTML, wanted_count);
    element.replace(output + '...');
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...