代码之家  ›  专栏  ›  技术社区  ›  Damon

使用Prototype更新表内容时出错

  •  0
  • Damon  · 技术社区  · 12 年前

    我想在原型中做这样的事情:

    onSuccess: function(transport) {
        template = transport.responseText.evalJSON();
        form = event.up('form');
        form.select('.audio_channels').update(template.channelHtml);
    }
    

    表单标记是一个表,我想替换它的内容。 channelHtml 是一个HTML字符串 <tr> 标签。

    我得到了:

    TypeError :对象 [object HTMLTableElement] 没有方法“update”

    所以我认为它不是一个扩展对象,并尝试 Element.extend(form.select('audio_channels')) ,返回一个空对象。然后我试着 form.select('.audio_channels').innerHTML(template.channelHtml) 我得到了 TypeError: Object [object HTMLTableElement] has no method 'innerHTML' .然后我尝试tbody元素,我得到 [object HTMLTableSectionElement] has no method 'innerHtml'

    这在我看来应该奏效。 form.select('audio_channels') 正在返回正确的DOM元素。我需要做些什么来根据ajax调用设置表的内容?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Damon    12 年前

    将最后一行替换为

    form.select('.audio_channels').each(function(node){
      node.update(template.channelHtml);
    });
    

    这将在实际元素上执行代码,而不是像原始代码那样在一个单项数组上执行代码。