IE下可以用,但是在FF下用不了,网上看了下,都是一个函数 
function insertHtml(where, el, html){      
     
    where = where.toLowerCase();      
    if(el.insertAdjacentHTML){      
     
        switch(where){      
            case "beforebegin":      
                el.insertAdjacentHTML('BeforeBegin', html);      
                return el.previousSibling;      
            case "afterbegin":      
                el.insertAdjacentHTML('AfterBegin', html);      
                return el.firstChild;      
            case "beforeend":      
                el.insertAdjacentHTML('BeforeEnd', html);      
                return el.lastChild;      
            case "afterend":      
                el.insertAdjacentHTML('AfterEnd', html);      
                return el.nextSibling;      
        }      
        throw 'Illegal insertion point -> "' + where + '"';      
    }      
                    
    var range = el.ownerDocument.createRange();      
    var frag;      
    switch(where){      
         case "beforebegin":      
            range.setStartBefore(el);      
            frag = range.createContextualFragment(html);      
            el.parentNode.insertBefore(frag, el);      
            return el.previousSibling;      
         case "afterbegin":      
            if(el.firstChild){      
                range.setStartBefore(el.firstChild);      
                frag = range.createContextualFragment(html);      
                el.insertBefore(frag, el.firstChild);      
                return el.firstChild;      
             }else{      
                el.innerHTML = html;      
                return el.firstChild;      
             }      
        case "beforeend":      
            if(el.lastChild){      
                range.setStartAfter(el.lastChild);      
                frag = range.createContextualFragment(html);      
                el.appendChild(frag);      
                return el.lastChild;      
            }else{      
                el.innerHTML = html;      
                return el.lastChild;      
            }      
        case "afterend":      
            range.setStartAfter(el);      
            frag = range.createContextualFragment(html);      
            el.parentNode.insertBefore(frag, el.nextSibling);      
            return el.nextSibling;      
    }      
    throw 'Illegal insertion point -> "' + where + '"';      
} 请问下这个用的时候该怎么用?或者有其他的方法能够在FF中用insertAdjacentHTML?

解决方案 »

  1.   

    [code=HTML]<div id="f">
    <input type="text"/>
    <input type="radio"/>
    </div><SCRIPT LANGUAGE="JavaScript"> 
     function insertHtml(where, el, html){
            where = where.toLowerCase();
            if(el.insertAdjacentHTML){
                switch(where){
                    case "beforebegin":
                        el.insertAdjacentHTML('BeforeBegin', html);
                        return el.previousSibling;
                    case "afterbegin":
                        el.insertAdjacentHTML('AfterBegin', html);
                        return el.firstChild;
                    case "beforeend":
                        el.insertAdjacentHTML('BeforeEnd', html);
                        return el.lastChild;
                    case "afterend":
                        el.insertAdjacentHTML('AfterEnd', html);
                        return el.nextSibling;
                }
                throw 'Illegal insertion point -> "' + where + '"';
            }
      var range = el.ownerDocument.createRange();
            var frag;
            switch(where){
                 case "beforebegin":
                    range.setStartBefore(el);
                    frag = range.createContextualFragment(html);
                    el.parentNode.insertBefore(frag, el);
                    return el.previousSibling;
                 case "afterbegin":
                    if(el.firstChild){
                        range.setStartBefore(el.firstChild);
                        frag = range.createContextualFragment(html);
                        el.insertBefore(frag, el.firstChild);
                        return el.firstChild;
                    }else{
                        el.innerHTML = html;
                        return el.firstChild;
                    }
                case "beforeend":
                    if(el.lastChild){
                        range.setStartAfter(el.lastChild);
                        frag = range.createContextualFragment(html);
                        el.appendChild(frag);
                        return el.lastChild;
                    }else{
                        el.innerHTML = html;
                        return el.lastChild;
                    }
                case "afterend":
                    range.setStartAfter(el);
                    frag = range.createContextualFragment(html);
                    el.parentNode.insertBefore(frag, el.nextSibling);
                    return el.nextSibling;
                }
                throw 'Illegal insertion point -> "' + where + '"';
        }
    var f = document.getElementById("f");
    insertHtml("afterbegin",f,"<span style='color:#f60'>321321321321</span>")
    </SCRIPT> 可以正常运行的
      

  2.   

    <div id="f">
    <input type="text"/>
    <input type="radio"/>
    </div><SCRIPT LANGUAGE="JavaScript"> 
     function insertHtml(where, el, html){
            where = where.toLowerCase();
            if(el.insertAdjacentHTML){
                switch(where){
                    case "beforebegin":
                        el.insertAdjacentHTML('BeforeBegin', html);
                        return el.previousSibling;
                    case "afterbegin":
                        el.insertAdjacentHTML('AfterBegin', html);
                        return el.firstChild;
                    case "beforeend":
                        el.insertAdjacentHTML('BeforeEnd', html);
                        return el.lastChild;
                    case "afterend":
                        el.insertAdjacentHTML('AfterEnd', html);
                        return el.nextSibling;
                }
                throw 'Illegal insertion point -> "' + where + '"';
            }
      var range = el.ownerDocument.createRange();
            var frag;
            switch(where){
                 case "beforebegin":
                    range.setStartBefore(el);
                    frag = range.createContextualFragment(html);
                    el.parentNode.insertBefore(frag, el);
                    return el.previousSibling;
                 case "afterbegin":
                    if(el.firstChild){
                        range.setStartBefore(el.firstChild);
                        frag = range.createContextualFragment(html);
                        el.insertBefore(frag, el.firstChild);
                        return el.firstChild;
                    }else{
                        el.innerHTML = html;
                        return el.firstChild;
                    }
                case "beforeend":
                    if(el.lastChild){
                        range.setStartAfter(el.lastChild);
                        frag = range.createContextualFragment(html);
                        el.appendChild(frag);
                        return el.lastChild;
                    }else{
                        el.innerHTML = html;
                        return el.lastChild;
                    }
                case "afterend":
                    range.setStartAfter(el);
                    frag = range.createContextualFragment(html);
                    el.parentNode.insertBefore(frag, el.nextSibling);
                    return el.nextSibling;
                }
                throw 'Illegal insertion point -> "' + where + '"';
        }
    var f = document.getElementById("f");
    insertHtml("afterbegin",f,"<span style='color:#f60'>321321321321</span>")
    </SCRIPT> 
      

  3.   

    我看到的也是4楼那个函数 但是用的时候不知道怎么回事就是提示你 missing ) before argument list 不知道什么情况哎  后来搜索了很久 看到另外一个函数 可以用了  我还是把函数贴出来吧
    function insertHTML(el, where, html) {
    if (!el) {
    return false;
    }

    where = where.toLowerCase();

    if (el.insertAdjacentHTML) {//IE
    el.insertAdjacentHTML(where, html);
    } else {
    var range = el.ownerDocument.createRange(),
    frag = null;

    switch (where) {
    case "beforebegin":
    range.setStartBefore(el);
    frag = range.createContextualFragment(html);
    el.parentNode.insertBefore(frag, el);
    return el.previousSibling;
    case "afterbegin":
    if (el.firstChild) {
    range.setStartBefore(el.firstChild);
    frag = range.createContextualFragment(html);
    el.insertBefore(frag, el.firstChild);
    } else {
    el.innerHTML = html;
    }
    return el.firstChild;
    case "beforeend":
    if (el.lastChild) {
    range.setStartAfter(el.lastChild);
    frag = range.createContextualFragment(html);
    el.appendChild(frag);
    } else {
    el.innerHTML = html;
    }
    return el.lastChild;
    case "afterend":
    range.setStartAfter(el);
    frag = range.createContextualFragment(html);
    el.parentNode.insertBefore(frag, el.nextSibling);
    return el.nextSibling;
    }
    }
    }