Javascript 选择格式在浏览器中不起作用,而在 dreamweaver 中它确实如此

Javascript Selected Formatting not working in browser while in dreamweaver it does

本文关键字:dreamweaver 而在 格式 选择 浏览器 不起作用 Javascript      更新时间:2023-09-26

我在这个脚本上遇到了一些问题。它应该将 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();
        }
    }
}

您可能想考虑使用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>
相关文章: