【问题标题】:Prototype function different id elements of the same class原型函数同一个类的不同id元素
【发布时间】:2011-05-08 03:13:57
【问题描述】:

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

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) 创建了“数据”变量(通过 innerHTML),然后我执行将单词计数(var Want_count)切割成“输出”变量。
最后我替换了原始元素(通过$$.class 再次)及其新的剪辑内容。

除了一个问题外,所有的工作都很好:仅使用 $$(class) 使得 只有第一个元素内容被考虑和替换 到其他所有人。
我也需要通过 id 来识别元素,我猜..因此我在(收集)上添加了注释功能,但我不知道如何加入我的目标..

到目前为止,我只得到了这个结果:

这是第一个'class'的内容 div...(cut)
这是第一个 'class' div 的内容...
这是第一个 'class' div 的内容...

虽然我想得到:

这是第一堂课的内容 div...
这是第二个“类”div 的内容...
这是第三个 'class' div 的内容...

感谢大家,感谢整个伟大的社区

【问题讨论】:

    标签: javascript string prototypejs getelementbyid


    【解决方案1】:

    我相信您正在将处理一组元素的工作与处理单个元素的工作混为一谈。自从我进入 Prototype 以来已经有一段时间了,但是您是否尝试过非常独立地工作,因此输出范围仅限于您要替换的元素:

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

    【讨论】:

      【解决方案2】:

      Invoke 仅当您向每个元素填充相同的变量时才会起作用。您需要使用each。 另外我认为您想使用update 而不是replace

      试试这个。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-29
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 2010-12-28
        相关资源
        最近更新 更多