V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yeelone
V2EX  ›  问与答

javascript createElement 如何插入内容 ?

  •  
  •   yeelone · 2013-01-30 11:56:46 +08:00 · 3411 次点击
    这是一个创建于 4316 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请看下面这个代码 :
    http://jsfiddle.net/yeelone/UuuMj/

    主要代码:
    // 所选内容替换成指定内容
    function replaceText(text) {
    var selectedText = window.getSelection();
    var div = document.createElement('div');
    var t = document.createTextNode(text);
    div.appendChild(t);
    console.log(t);
    console.log(div);
    selectedText.getRangeAt(0).surroundContents(div);
    selectedText.removeAllRanges();
    }

    输出的情况是:
    "yeelone"
    <div></div>

    为什么不是:
    "yeelone"
    <div>yeelone</div> 呢?
    请大家帮帮忙。
    4 条回复    1970-01-01 08:00:00 +08:00
    liaa
        1
    liaa  
       2013-01-30 12:16:58 +08:00
    lz 将你上面的这3行改一下就行
    --var div = document.createElement('div');
    var anotherDiv = document.createElement('div');

    --div.appendChild(t);
    antherDiv.appendChild(t);

    --console.log(div);
    console.log(anotherDiv);

    你下面那个console.log输出的div其实是指向到了你html那个空div中去了
    YuHong
        2
    YuHong  
       2013-01-30 12:17:05 +08:00
    createElement(); 返回的是一个Element 对象

    console.log(div.outerHTML === "<div>yeelone</div>")
    console.log(div.outerText === "yeelone")
    liaa
        3
    liaa  
       2013-01-30 12:25:09 +08:00
    @liaa 一楼的解释是错误的,别试了
    yeelone
        4
    yeelone  
    OP
       2013-01-30 13:35:39 +08:00
    @YuHong 不行呢。如果用 div.outerHTML ,会报这个错:
    selectedText.getRangeAt(0).surroundContents(div);
    Uncaught Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6045 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:34 · PVG 10:34 · LAX 18:34 · JFK 21:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.