使用 Javascript 更改所选文本的行高
Change the line height of the selected text with Javascript
我正在尝试编写自己的 WYSIWYG 编辑器作为暑期项目。我正在尝试实现控制(单间距、双间距等)的行高功能。我已经创建了允许用户在间距类型之间 select 的下拉列表。但是,我似乎无法获得正确的 Javascript,因为无论我选择哪个选项,selected 文本的行间距根本不会改变。有人可以看看我的 Javascript 并告诉我哪里出错了吗?如果可能的话,你能给我 Javascript 的正确代码,这样我就可以参考它吗?谢谢!
HTML(工作):
<select id="lineHeight" onchange="spacing(this)">
<option value="20px">20px</option>
<option value="80px">80px</option>
<option value="100px">100px</option>
<option value="200px">200px</option>
</select>
Javascript(不工作)
function spacing(sel) {
var text = editor.document.getSelection();
text.style.lineHeight = sel.value;
}
如果我明白你想做什么,也许这对你有用:
function changeStyle( property, value ) {
if ( window.getSelection().rangeCount ) {
var range = window.getSelection().getRangeAt( 0 ),
contents = range.extractContents(),
span = document.createElement( 'span' );
span.style[ property ] = value;
span.appendChild( contents );
range.insertNode( span );
window.getSelection().removeAllRanges()
}
}
#editor {
width: 350px;
max-height: 100px;
padding: 20px;
overflow-y: auto;
background-color: #efefef;
border: 1px solid #ddd
}
<p>
<label for="lineHeight">Line Height: </label>
<select id="lineHeight" onchange="changeStyle('line-height', this.value)">
<option value="20px">20px</option>
<option value="80px">80px</option>
<option value="100px">100px</option>
<option value="200px">200px</option>
</select>
<button onclick="changeStyle('font-weight', 'bold')">Bold</button>
<button onclick="changeStyle('font-style', 'italic')">Italic</button>
<button onclick="changeStyle('color', 'red')">Color</button>
<button onclick="changeStyle('background-color', 'yellow')">Background</button>
</p>
<div id="editor" contenteditable>Change the line height of the selected text with Javascript:<br>Please note that this example should be completed.</div>
我正在尝试编写自己的 WYSIWYG 编辑器作为暑期项目。我正在尝试实现控制(单间距、双间距等)的行高功能。我已经创建了允许用户在间距类型之间 select 的下拉列表。但是,我似乎无法获得正确的 Javascript,因为无论我选择哪个选项,selected 文本的行间距根本不会改变。有人可以看看我的 Javascript 并告诉我哪里出错了吗?如果可能的话,你能给我 Javascript 的正确代码,这样我就可以参考它吗?谢谢!
HTML(工作):
<select id="lineHeight" onchange="spacing(this)">
<option value="20px">20px</option>
<option value="80px">80px</option>
<option value="100px">100px</option>
<option value="200px">200px</option>
</select>
Javascript(不工作)
function spacing(sel) {
var text = editor.document.getSelection();
text.style.lineHeight = sel.value;
}
如果我明白你想做什么,也许这对你有用:
function changeStyle( property, value ) {
if ( window.getSelection().rangeCount ) {
var range = window.getSelection().getRangeAt( 0 ),
contents = range.extractContents(),
span = document.createElement( 'span' );
span.style[ property ] = value;
span.appendChild( contents );
range.insertNode( span );
window.getSelection().removeAllRanges()
}
}
#editor {
width: 350px;
max-height: 100px;
padding: 20px;
overflow-y: auto;
background-color: #efefef;
border: 1px solid #ddd
}
<p>
<label for="lineHeight">Line Height: </label>
<select id="lineHeight" onchange="changeStyle('line-height', this.value)">
<option value="20px">20px</option>
<option value="80px">80px</option>
<option value="100px">100px</option>
<option value="200px">200px</option>
</select>
<button onclick="changeStyle('font-weight', 'bold')">Bold</button>
<button onclick="changeStyle('font-style', 'italic')">Italic</button>
<button onclick="changeStyle('color', 'red')">Color</button>
<button onclick="changeStyle('background-color', 'yellow')">Background</button>
</p>
<div id="editor" contenteditable>Change the line height of the selected text with Javascript:<br>Please note that this example should be completed.</div>