如何用javascript实现对文本域加粗,斜体和下划线效果的设置

JavaScript08

如何用javascript实现对文本域加粗,斜体和下划线效果的设置,第1张

1、可以通过 style 让整个文本框内容加粗,但没有办法单独改变部分文字的样式。

2、下面的代码只是个例子,可以实现将选择的文本加粗,但实际应用中考虑的问题还有很多,IE 9, Firefox 19, Chrome 26 下测试都没有问题,Safari 会出现移位错误,Opera 直接不支持。

<script language="javascript">

window.onload = function() {

    // iframe 窗口

    var frameWin = document.getElementById('result').contentWindow

    // iframe 页面

    var frameDoc = frameWin.document

    // 在 iframe 页面输出一些字符

    frameDoc.body.innerHTML = 'Lorem ipsum dolor sit amet'

    // 点击加粗

    document.getElementById("bold").onclick = function() {

        // 获取选择

        var sel = frameDoc.getSelection()

        // 获取选择的文字

        var txt = sel.getRangeAt(0).extractContents().textContent

        // 选择范围

        range = sel.getRangeAt(0)

        // 删除被选择的内容

        range.deleteContents()

        // 创建新的元素 strong

        var bold = frameWin.document.createElement("strong")

        // 设置 strong 内容

        bold.innerHTML = txt

        // 在被选择的位置添加加粗的元素

        range.insertNode(bold)

    }

}

</script> <iframe style="width:600px height:200px" id="result"></iframe>

<input type="button" id="bold" value="加粗" />

点击文字出现下划线的方法有如下两种:

1、可以再点击的时候添加设置css text-decoration: underline 使用js在点击事件里设置被点击的文字添加css ext-decoration: underline

2、直接使用<a>标签,超链接标签默认点击后会有下划线效果 <a>测试</a>

var exp=/^(?:\w|-|\r|\n|[\u0100-\uFFFF])*$/i//姑且认为ascii以外字符全是全角,对汉字来说全覆盖,全角空格?是神马字符?用"【空格】".charCodeAt(0)获取unicode码后从范围中删除即可

console.log(exp.test("_azAZ\n010-189554\n好啊《书名号》?全角问号\n换行"))//true

console.log(exp.test("+"))//false

console.log(exp.test(" "))//false