appendChild(HTMLElement)
or
insertAdjacentHTML(HTMLString); //IE

解决方案 »

  1.   

    appendChild 这个太慢了
    insertAdjacentHTML 的引数因该是一段html代码,怎么不好用呢
      

  2.   

    insertAdjacentHTML 这个方法会用了,为什么运行速度那么慢呢,有什么释放内存的代码
      

  3.   

    insertAdjacentHTML这个函数有firefox下的兼容实现 HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
    {
    var r = this.ownerDocument.createRange();
    r.setStartBefore(this);
    var parsedHTML = r.createContextualFragment(htmlStr);
    this.insertAdjacentElement(where,parsedHTML);
    parsedHTML = null;
    r = null;
    }在firefox下执行这段代码就可以给firefox扩展出该函数功能的至于为什么慢,自己分析分析了
    是不是数据量太大了?
    还是什么其他原因?
      

  4.   

    冰点兄弟,你给的代码自己有没有测试过呀? insertAdjacentElement 这个方法FF里的扩展你没有贴出来呀!HTMLElement.prototype.insertAdjacentHTML=function(where, html)
    {
      var e=this.ownerDocument.createRange();
      e.setStartBefore(this);
      e=e.createContextualFragment(html);
      switch (where)
      {
        case 'beforeBegin': this.parentNode.insertBefore(e, this);break;
        case 'afterBegin': this.insertBefore(e, this.firstChild); break;
        case 'beforeEnd': this.appendChild(e); break;
        case 'afterEnd':
          if(!this.nextSibling) this.parentNode.appendChild(e);
          else this.parentNode.insertBefore(e, this.nextSibling); break;
      }
    };
      

  5.   

    对不起,再问一下,为什么var e=this.ownerDocument.createRange();这句话报错
    说this.ownerDocument是null,没有这个object呢?请执教,还应该加什么代码
      

  6.   

    HTMLElement.prototype这句话就报错,也是空
      

  7.   

    if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement)
    {
    HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
    {
    switch (where){
    case 'beforeBegin':
    this.parentNode.insertBefore(parsedNode,this)
    break;
    case 'afterBegin':
    this.insertBefore(parsedNode,this.firstChild);
    break;
    case 'beforeEnd':
    this.appendChild(parsedNode);
    break;
    case 'afterEnd':
    if (this.nextSibling)
    this.parentNode.insertBefore(parsedNode,this.nextSibling);
    else
    this.parentNode.appendChild(parsedNode);
    break;
    }
    }
    HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
    {
    var r = this.ownerDocument.createRange();
    r.setStartBefore(this);
    var parsedHTML = r.createContextualFragment(htmlStr);
    this.insertAdjacentElement(where,parsedHTML);
    parsedHTML = null;
    r = null;
    }
    HTMLElement.prototype.insertAdjacentText = function(where,txtStr)
    {
    var parsedText = document.createTextNode(txtStr);
    this.insertAdjacentElement(where,parsedText);
    parsedText = null;
    }
    }来一段全的,这是我的一个程序正在使用的代码,摘录一段出来,应该没问题的