Use*_*786 0 html javascript contenteditable
当突出显示div中的特定文本时,如何更改字体。当我从保管箱中选择一种字体时,下面的代码将更改整个文本的字体。
function changeFont(font) {
document.getElementById("note_header").style.fontFamily = font.value;
}Run Code Online (Sandbox Code Playgroud)
Highlight text and change font <br>
<select id="select_font" onchange="changeFont(this);">
<option value="Arial">Arial</option>
<option value="Sans Serif" selected>Sans Serif</option>
<option value="Comic Sans MS">Comic Sans MS</option>
<option value="Times New Roman">Times New Roman</option>
<option value="Courier New">Courier New</option>
<option value="Verdana">Verdana</option>
<option value="Trebuchet MS">Trebuchet MS</option>
<option value="Arial Black">Arial Black</option>
<option value="Impact">Impact</option>
<option value="Bookman">Bookman</option>
<option value="Garamond">Garamond</option>
<option value="Palatino">Palatino</option>
<option value="Georgia">Georgia</option>
</select>
<div contenteditable="true" id="note_header" style="width:200px; height:200px; border: 1px solid #ccc">
Some Content
</div>Run Code Online (Sandbox Code Playgroud)
试图增强Ankit的答案,
这是不使用该replace()功能的解决方案。
Ankit解决方案的问题在于,如果重复出现某个文本,则替换该文本的首次出现。
例如,当文本为“ abc abc”并且我们选择了第二个文本时,这是第一个更改了其字体的文本。
???
下面的代码片段使用所选的文本和所选的字体创建一个新的html元素,然后删除所选内容并将新元素插入其位置:(
请参见代码中的注释)
function changeFont(font) {
var sel = window.getSelection(); // Gets selection
if (sel.rangeCount) {
// Creates a new element, and insert the selected text with the chosen font inside
var e = document.createElement('span');
e.style = 'font-family:' + font.value + ';';
e.innerHTML = sel.toString();
// https://developer.mozilla.org/en-US/docs/Web/API/Selection/getRangeAt
var range = sel.getRangeAt(0);
range.deleteContents(); // Deletes selected text…
range.insertNode(e); // … and inserts the new element at its place
}
}Run Code Online (Sandbox Code Playgroud)
.editable {
width: 360px;
height: 120px;
border: 1px solid #ccc
}Run Code Online (Sandbox Code Playgroud)
Highlight text and change font <br>
<select id="select_font" onchange="changeFont(this);">
<option value="Arial">Arial</option>
<option value="Sans Serif" selected>Sans Serif</option>
<option value="Comic Sans MS">Comic Sans MS</option>
<option value="Times New Roman">Times New Roman</option>
<option value="Courier New">Courier New</option>
<option value="Verdana">Verdana</option>
<option value="Trebuchet MS">Trebuchet MS</option>
<option value="Arial Black">Arial Black</option>
<option value="Impact">Impact</option>
<option value="Bookman">Bookman</option>
<option value="Garamond">Garamond</option>
<option value="Palatino">Palatino</option>
<option value="Georgia">Georgia</option>
</select>
<div contenteditable="true" class="editable">
Some Content
</div>Run Code Online (Sandbox Code Playgroud)
请注意,不需要添加jQuery。
(OP在他们的问题中没有使用它)
希望对您有所帮助。