Javascript:帮助将'<div>'替换为innerHTML的'<br/>'!</div>

时间:2010-11-26 19:12:57

标签: javascript html replace innerhtml

我有一个用户编写的可编辑div。正如他所写,javascript函数将div html添加到textarea。当用户按下SHIFT + Enter时,div得到<br>。这很好。

但是当用户单独按Enter键时,div会获得<div></div>个标签。

因此我尝试这样做,以便在按下Enter时,javascript扫描div的html以消除</div>并更改<div> <br>。结果是,无论用户是否按下SHIF + Enter或Enter,div的html最终仅使用<br>进行换行。

<head>
    <script type="text/javascript">
        function doStuff(e){
            if (window.event.keyCode == 13) {
                var s=document.getElementById("divv").innerHTML;
                s.replace("<div>", "<br>");
                s.replace("</div>", "");
                document.getElementById("divv").innerHTML=s;
            }
            document.getElementById("txtt").value = document.getElementById("divv").innerHTML;
        }
    </script>
</head>
<body>
    <div contenteditable="true" id="divv" onKeyUp=doStuff(event);">
        write here! Then press enter!
    </div>
    <textarea id="txtt" rows="30" cols="100">  
    </textarea>
</body>

我的代码不起作用。按Enter键时,textArea仍显示div标签 我不确定我做错了什么。请帮忙。

3 个答案:

答案 0 :(得分:3)

replace()方法不会修改它所调用的字符串,返回一个新的字符串,并替换了这些事件。

您可以执行以下操作:

var divv = document.getElementById("divv");
divv.innerHTML = divv.innerHTML.replace("<div>", "<br>").replace("</div>", "");

答案 1 :(得分:2)

通常,浏览器会将innerHTML商店标记设为<DIV></DIV> - 您可以尝试使用:

s = s.replace(/<div>/ig,"<br>");
s = s.replace(/<\/div>/ig,"");

答案 2 :(得分:0)

首先,如果您使用xhtml,则必须使用标记“&lt; br /&gt;”。

同时引起对str.replace的注意:它只替换一次。

js> var x = "hello";
js> x.replace("l", "L");
heLlo

进行替换实施:

js> function myreplace(str, pattern, change_to) {
var s = str;
var s2 = s;
do {
   s2 = s;
   s = s.replace(pattern, change_to);
} while (s2 != s);
return s;
}
js> myreplace("helllllo", "l", "L");
heLLLLLo