繁体   English   中英

Javascript:帮助替换“ <div> 与“ <br> 的innerHTML!

[英]Javascript: help with replacing '<div>' with '<br>' of an 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标签。
我不确定自己在做什么错。 请帮忙。

replace()方法不会修改其调用的字符串,它会返回一个新字符串,其中已替换出现的字符串。

您可以执行以下操作:

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

通常,浏览器将具有innerHTML存储标签,如<DIV></DIV> -您可以尝试使用:

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

首先,如果使用xhtml,则必须使用标签“ <br />”。

还要注意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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM