Prototype函数同一个类的不同id元素

时间:2011-05-08 03:13:58

标签: javascript string prototypejs getelementbyid

我正在制作这个原型脚本:

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内容。我从一般的$$(.class)创建'data'变量(通过innerHTML)然后我通过单词计数(var wanted_count)执行切换到'output'var。在最后我替换原始元素(其中包括一个问题:仅使用$$(类)使仅考虑和替换第一个元素内容对所有其他人。
我也需要通过id识别元素,我想......我在评论函数中添加了(收集),但我不知道如何加入我的目标..

到现在为止我只得到了这个结果:

  

这是第一堂课的内容   div ... (cut)
这是firts'class'div的内容......   这是第一个“阶级”的内容...

虽然我想得到:

  

这是第一个“课堂”的内容   DIV ...
      这是第二个“阶级”div的内容...
      这是第三个“阶级”div的内容......

感谢你们,感谢这个伟大的社区整体

2 个答案:

答案 0 :(得分:0)

我相信你正在混合使用一个元素集合来处理单个元素。自从我进入Prototype以来已经有一段时间了,但你是否尝试过非常独立的工作,所以输出的范围是你要替换的元素:

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

  $$('.class').each(function(element){
    output = cutHtmlString(element.innerHTML, wanted_count);
    element.replace(output + '...');
  });
}

答案 1 :(得分:0)

只有在为每个元素填充相同的变量时,

Invoke才有效。您需要使用each。 另外,我认为您要使用update而不是replace

试试这个。

function removing() {
  $$('.class').each(function(el){
    var output = cutHtmlString(el.innerHTML, 10);
    el.update(output + '...');
  });
}