Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法从<;中删除斜体样式;i>;标记而不影响document.execCommand(";italic";)_Javascript_Html_Css_Contenteditable_Execcommand - Fatal编程技术网

Javascript 有没有办法从<;中删除斜体样式;i>;标记而不影响document.execCommand(";italic";)

Javascript 有没有办法从<;中删除斜体样式;i>;标记而不影响document.execCommand(";italic";),javascript,html,css,contenteditable,execcommand,Javascript,Html,Css,Contenteditable,Execcommand,我想使标记中的文本在contenteditable div中不显示为斜体 但是,正如您在下面的代码片段中所看到的,如果我将font-style:normal添加到italic样式中,则用于Unitalize的document.execCommand('italic')将不再起作用,因为浏览器正确地检测到文本不是斜体 有没有什么方法既能让unitalic看起来像,又能让unitalic化 函数斜体(){ document.execCommand(“斜体”); } i{ 字体风格:普通; 颜色:红

我想使
标记中的文本在contenteditable div中不显示为斜体

但是,正如您在下面的代码片段中所看到的,如果我将
font-style:normal
添加到italic样式中,则用于Unitalize的
document.execCommand('italic')
将不再起作用,因为浏览器正确地检测到文本不是斜体

有没有什么方法既能让unitalic看起来像
,又能让unitalic化

函数斜体(){
document.execCommand(“斜体”);
}
i{
字体风格:普通;
颜色:红色;
}
abc
斜体
函数斜体(){
设myDiv=document.querySelector(“#myDiv”);
myDiv.style.fontStyle.localeCompare(“italic”)?myDiv.style.fontStyle=“italic”:myDiv.style.fontStyle=“normal”;
}
i{
字体风格:普通;
颜色:红色;
}

文件
abc
斜体

一种方法是创建一个特定的样式规则,从
中的所有
元素中删除默认的斜体样式

然后,使用
querySelectorAll
可以将
属性中的所有
作为目标,并通过切换类使文本斜体化:

函数斜体(){
让contentDivs=document.querySelectorAll('[contentedidated=“true”]>i')
for(let div of contentDivs){
div.classList.toggle('add-italic');
}
}
div>i{
字体风格:普通;
颜色:红色;
}
.添加斜体{
字体:斜体;
}
abc

italic
此问题的更多解决方案

使用innerText更改节点
函数unitalicize(){
var元素=document.getElementsByTagName(“i”)[0];
var span=document.createElement(“span”);
while(element.firstChild){
span.appendChild(元素.firstChild);
}
元素.parentElement.replaceChild(跨度,元素)
}
函数斜体(){
var元素=document.getElementsByTagName(“span”)[0];
var i=document.createElement(“i”);
while(element.firstChild){
i、 appendChild(element.firstChild);
}
元素.parentElement.replaceChild(i,元素)
}
i{
颜色:红色;
}
abc
统一化()

斜体()!为了这个特定的目的,HTML有标记名
span
,为什么不使用it@Awais要提供更多的上下文,请考虑一个注释编辑器,其中注释已经使用斜体和粗体。对于外部脚本,我正在改变斜体标记的外观。但是,这样做会使用户无法统一身份。表示
execCommand
已过时,不应使用。我认为这没什么帮助,因为他们没有说你需要用什么来代替它。@yoonchaelee哦,是的,对不起,我错过了,明白了:(,一种简单的方法是单击时切换类,该类具有斜体字体样式。我如何才能不对整个div执行此操作,而只对我选择的文本执行此操作?您必须找到一种方法来选择特定元素。您是否可以进一步澄清一点?也许可以添加一个示例?通过单击并拖动来选择文本。而不是斜体/UNITALIZE entir我可以尝试使用window.getSelection()进行选择,但由于所选文本可能不是整个节点,我不确定该如何进行选择