我有一个用户编写的可编辑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标签 我不确定我做错了什么。请帮忙。
答案 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