![](/img/trans.png)
[英]JavaScript document.execCommand remove formatBlock formatting?
[英]Is there a way to remove italic style from <i> tag without effecting document.execCommand("italic")
我想让<i>
标签中的文本在 contenteditable div 中不显示为斜体。
但是,正如您在下面的代码片段中所看到的,如果我将font-style:normal
添加到斜体样式,则document.execCommand('italic')
不再有效,因为浏览器正确地检测到文本不是斜体。
有什么办法可以同时拥有统一的<i>
和统一的方法吗?
function italicize(){ document.execCommand("italic"); }
i{ font-style:normal; color:red; }
<div contenteditable=true>a<i>b</i>c</div> <button onclick=italicize()>italic</button>
function italicize() { let myDiv = document.querySelector("#myDiv"); myDiv.style.fontStyle.localeCompare("italic") ? myDiv.style.fontStyle = "italic" : myDiv.style.fontStyle = "normal"; }
i { font-style: normal; color: red; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="myDiv" contenteditable=true>a<i>b</i>c</div> <button onclick="italicize()">italic</button> </body> </html>
这是你想要的? #newToStackOverflow
一种方法是创建一个特定的样式规则,从<div>
内的所有<i>
元素中删除默认的斜体样式。
然后,使用querySelectorAll
您可以定位所有位于<div contenteditable="true">
属性内的<i>
并通过切换类使文本斜体:
function italicize() { let contentDivs = document.querySelectorAll('[contenteditable="true"] > i') for (let div of contentDivs) { div.classList.toggle('add-italic'); } }
div > i { font-style: normal; color: red; } .add-italic { font-style: italic; }
<div contenteditable="true">a<i>b</i>c</div> <button onclick="italicize()">italic</button>
此问题的更多解决方案。
function unitalicize(){ var element = document.getElementsByTagName("i")[0]; var span = document.createElement("span"); while(element.firstChild){ span.appendChild(element.firstChild); } element.parentElement.replaceChild(span,element) } function italicize(){ var element = document.getElementsByTagName("span")[0]; var i = document.createElement("i"); while(element.firstChild){ i.appendChild(element.firstChild); } element.parentElement.replaceChild(i,element) }
i{ color:red; }
<div contenteditable=true>a<i>b</i>c</div> <button onclick=unitalicize()>unitalicize()</button> <button onclick=italicize()>italicize()</button>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.