Javascript:帮助用 innerHTML 的 '<br>' 替换 '<div>'!

Posted

技术标签:

【中文标题】Javascript:帮助用 innerHTML 的 \'<br>\' 替换 \'<div>\'!【英文标题】:Javascript: help with replacing '<div>' with '<br>' of an innerHTML!Javascript:帮助用 innerHTML 的 '<br>' 替换 '<div>'! 【发布时间】:2011-05-16 08:04:15 【问题描述】:

我有一个用户在其中写入的可编辑 div。正如他所写,一个 javascript 函数将 div html 添加到 textarea。当用户按下 SHIFT+Enter 时,div 得到一个&lt;br&gt;。这很好。

但是当用户单独按 Enter 键时,div 会得到&lt;div&gt;&lt;/div&gt; 标签。

因此,我尝试使其在按下 Enter 时,javascript 扫描 div 的 html 以消除 &lt;/div&gt; 并将 &lt;div&gt; 更改为 &lt;br&gt;。结果将是无论用户按下SHIF+Enter 还是Enter,div 的html 最终将只使用&lt;br&gt; 进行换行。

<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 标签。 我不确定我做错了什么。请帮忙。

【问题讨论】:

【参考方案1】:

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

你可以这样做:

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

【讨论】:

愚蠢的我。就是这样。谢谢。【参考方案2】:

通常浏览器会将innerHTML 存储标记为&lt;DIV&gt;&lt;/DIV&gt; - 您可以尝试使用:

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

【讨论】:

是的,我意识到替换返回了修改后的字符串,而不是仅仅改变它。但是感谢/ig。我没有意识到它会在第一场比赛中停止。【参考方案3】:

首先,如果你使用xhtml,你必须使用标签“”。

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

【讨论】:

呃,我忘了正则表达式替换(***.com/questions/4287970/…)。最好使用它。 是的,我正在使用正则表达式。使用 /ig 它不会在第一场比赛中停止。无论如何,Tahnks。

以上是关于Javascript:帮助用 innerHTML 的 '<br>' 替换 '<div>'!的主要内容,如果未能解决你的问题,请参考以下文章

将 javascript innerhtml 变量传递给 php

javascript innerHTML累加值问题~~求解

JavaScript中,可以用元素的innerHTML直接添加子元素吗?

javascript append 怎么代替innerHTML

javascript中innerHTML和appendChild的比较

模拟InnerHTML输出文本Javascript