0

我在使用这个脚本时遇到了一些问题。应该将 html 标签添加到文本框中的选定文本区域。在 Dreamweaver 中实时查看时,它工作得很好。正是它应该如何。在浏览器中它什么也不做。

有什么想法吗?

使用 调用该函数onclick="formatText(content,'b')"

function formatText(el, tag) {
    var selectedText = document.selection ? document.selection.createRange().text
            : el.value.substring(el.selectionStart, el.selectionEnd);
    alert(selectedText);
    if (selectedText != '') {
        var newText = '<' + tag + '>' + selectedText + '</' + tag + '>';
        el.value = el.value.replace(selectedText, newText);
        document.getElementById(el).focus();
    } else {
        if (document.getElementById(tag).value == "0") {
            document.getElementById(tag).value = "1";
            document.getElementById(el).value = document.getElementById(el).value
                    + "<" + tag + ">";
            document.getElementById(el).focus();
        } else {
            document.getElementById(tag).value = "0";
            document.getElementById(el).value = document.getElementById(el).value
                    + "</" + tag + ">";
            document.getElementById(el).focus();
        }
    }
}
4

1 回答 1

0

您可能想要考虑使用的东西是 jQuery,它具有内置功能来完成您想要做的大部分事情。值得你花时间学习。(见http://jquery.com/

话虽如此,我对您的代码进行了一些编辑。您需要将“onclick”事件更改为“onmousedown”,将其保留为“onclick”将删除您选择的文本焦点,并且您的方法将不起作用..我不确定您的 else 语句应该做什么,所以我根本没有更新。希望这会有所帮助。

干杯。

<script type="text/javascript">

function formatText( el , tag )
{
    var selectedText = "" + document.getSelection();

    if ( selectedText.length > 0 )
    {
        var textWithTag = "&lt;" + tag + "&gt;" + selectedText + "&lt;/" + tag + "&gt;";
        el.innerHTML = el.innerHTML.replace( selectedText , textWithTag );
    }
}

</script>

<div id="test">Something</div>
<div onmousedown='formatText( document.getElementById("test") , "span style=\"color:red\"" );'>Click</div>
于 2012-04-09T15:56:19.363 回答