首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入带有Prototypejs的innerHTML

插入带有Prototypejs的innerHTML
EN

Stack Overflow用户
提问于 2011-05-24 20:41:34
回答 5查看 2.9K关注 0票数 0

假设我有一个这样的清单:

代码语言:javascript
复制
<ul id='dom_a'>
  <li>foo</li>
</ul>

我知道如何在ul标记中插入元素:

代码语言:javascript
复制
Element.insert('dom_a', {bottom:"<li>bar</li>"});

因为我收到的字符串包含了dom id,所以我需要插入内部的,而不是整个元素。我需要一个函数来完成这个任务:

代码语言:javascript
复制
insert_content('dom_a', {bottom:"<ul id='dom_a'><li>bar</li></ul>"});

并获得:

代码语言:javascript
复制
<ul id='dom_a'>
  <li>foo</li>
  <li>bar</li>
</ul>

我该如何用原型来完成这个任务?

这是我想出的解决办法,谁能让这件事变得更好?

代码语言:javascript
复制
Zena.insert_inner = function(dom, position, content) {
  dom = $(dom);
  position = position.toLowerCase();
  content = Object.toHTML(content);
  var elem = new Element('div');
  elem.innerHTML = content; // strip scripts ?
  elem = elem.down();
  var insertions = {};
  $A(elem.childElements()).each(function(e) {
    insertions[position] = e;
    dom.insert(insertions);
  });
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-24 23:01:15

我认为您可以通过简单地附加临时元素的第一个子元素的innerHTML来精简代码:

代码语言:javascript
复制
Zena.insert_inner = function(dom, position, content) {
    var d = document.createElement('div');
    d.innerHTML = content;
    var insertions = {};
    insertions[position] = d.firstChild.innerHTML;
    Element.insert(dom, insertions);
}

不过,没有太大的进步,这里的例子

票数 1
EN

Stack Overflow用户

发布于 2011-05-24 22:39:07

我认为您可以在变量中解析代码块,然后向它请求它的innerHTML,然后使用insert将代码块插入到DOM实际节点的底部。

看起来可能是这样:

代码语言:javascript
复制
var rep_struct = "<ul id='dom_a'><li>bar</li></ul>";
var dummy_node = new Element('div'); // So we can easily access the structure
dummy_node.update(rep_struct);
$('dom_a').insert({bottom: dummy_node.childNodes[0].innerHTML});
票数 2
EN

Stack Overflow用户

发布于 2011-05-24 20:51:07

我一直在研究原型文档,我发现了以下内容:更新功能

通过描述它,您可以使用update函数来查找当前的bottom内容,然后通过添加所需的代码和前面存储的代码来更新它(就像innerHTML一样)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6116600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档