使用Javascript更改所选文本的行高

时间:2018-06-16 02:52:18

标签: javascript html editor wysiwyg

我正在尝试将我自己的WYSIWYG编辑器编程为夏季项目。我正在尝试实现控制的行高度函数(单行距,双行间距等)。我创建了下拉列表,允许用户在间距类型之间进行选择。但是,我似乎无法获得正确的Javascript,因为无论我选择哪个选项,所选文本都不会改变行间距。有人可以看看我的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;
    }

1 个答案:

答案 0 :(得分:0)

如果我理解你想要做什么,也许这对你有用:

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>