Javascript—修改脚本以将换行符转换为<;br>;

Javascript—修改脚本以将换行符转换为<;br>;,javascript,line,Javascript,Line,我对javascript很讨厌。我正在使用以下代码,我希望在文本区域中输入的换行符变成标记。我已经四处寻找了一段时间,似乎找不到任何有效的方法,所以如果有人能帮助我,那就太好了 ////////////////SETTINGS////////////// var editableElements = new Array("p", "h1","ul"); //List of editable elements var doubleClick = false; //If false, sin

我对javascript很讨厌。我正在使用以下代码,我希望在文本区域中输入的换行符变成

标记。我已经四处寻找了一段时间,似乎找不到任何有效的方法,所以如果有人能帮助我,那就太好了

    ////////////////SETTINGS//////////////
var editableElements = new Array("p", "h1","ul"); //List of editable elements
var doubleClick = false; //If false, single click is used to start editing
var allowNull = true; //If a editable region is allowed to be blank
var nullValue = "none"; //If it is blank, what should it show
var textEditorSize = 50; //In px
//////////////////////////////////////
var currentlyEditing = false;
function loadEditor(actionFile){
  contents = document.body.innerHTML;
  document.body.innerHTML = '<form action="' + actionFile + '" method="post" id="editor429_form"><input type="button" value="Save Page" name="savepage" onclick="savePage(this)" /><input type="hidden" name="pagecontents" value="" /></form>' + contents;
  document.onkeydown = function(event){ changeEditor(event); }
  for(z = 0; z <= editableElements.length - 1; z++){
    elements = document.getElementsByTagName(editableElements[z]);
    for(i = 0; i <= elements.length - 1; i++){
      if(doubleClick == true){
        elements[i].ondblclick = function(){ startEditor(this); }
      }else{
        elements[i].onclick = function(){ startEditor(this); }
      }
    }
  }
}
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}


function startEditor(me){
  if(currentlyEditing == false){
    contents = me.innerHTML;
    me.innerHTML = '<textarea class="editor429_editor" id="editorBox" style="width: 100%;height:' + textEditorSize + 'px;" onblur="endEditor(this)">' + contents + '</textarea>';
    currentlyEditing = true;
    document.getElementById('editorBox').focus();
  }
}
function endEditor(me){
  contents = me.value;
  if(contents.trim() == "") contents = nullValue;
  me.parentNode.innerHTML = contents;
  currentlyEditing = false;
}
function savePage(me){
  me.parentNode.pagecontents.value = (document.body.innerHTML.search('</form>') != -1) ? document.body.innerHTML.trim().substr(document.body.innerHTML.indexOf('</form>') + 7):document.body.innerHTML.trim().substr(document.body.innerHTML.indexOf('</FORM>') + 7);
  me.parentNode.submit();
}
function changeEditor(e){
  //38 up
  //40 down
  if((e.keyCode == 38 || e.keyCode == 40 ) && e.altKey == true && currentlyEditing == true){
    if(e.keyCode == 38){
      document.getElementById('editorBox').style.height = "50px";
    }else if(e.keyCode == 40){

    }
  }
}
//设置//////////////
var editableElements=新数组(“p”、“h1”、“ul”)//可编辑元素列表
var doubleClick=false//如果为false,则使用单击开始编辑
var allowNull=真//如果允许可编辑区域为空
var nullValue=“无”//如果是空白,应该显示什么
var textEditorSize=50//在px中
//////////////////////////////////////
var currentlyEditing=false;
函数loadEditor(actionFile){
contents=document.body.innerHTML;
document.body.innerHTML=''+内容;
document.onkeydown=函数(事件){changeEditor(事件);}

对于(z=0;z请尝试用

<br>


我将对您的内容变量进行替换。

尝试将所有“\r'、“\n'、“\r\n”和“\n\r”替换为

<br>


我会对您的内容变量进行替换。

尝试修改代码中的以下行,并注意我添加的其他“.replace”调用。它们将新行替换为

   function endEditor(me){
      contents = me.value.replace(/\n/g, '<br />');
      if(contents.trim() == "") contents = nullValue;
      me.parentNode.innerHTML = contents;
      currentlyEditing = false;
   }
函数endEditor(me){
contents=me.value.replace(/\n/g,
); 如果(contents.trim()==“”)contents=null值; me.parentNode.innerHTML=内容; currentlyEditing=false; }

编辑:我把替换放错了地方。我相信这个更新的代码应该用来自textarea的文本中的换行符来替换换行符。
以前,我是在整个HTML上这样做的。

尝试修改代码中的以下行,并注意我添加的额外的“.replace”调用。它们将新行替换为

   function endEditor(me){
      contents = me.value.replace(/\n/g, '<br />');
      if(contents.trim() == "") contents = nullValue;
      me.parentNode.innerHTML = contents;
      currentlyEditing = false;
   }
函数endEditor(me){
contents=me.value.replace(/\n/g,
); 如果(contents.trim()==“”)contents=null值; me.parentNode.innerHTML=内容; currentlyEditing=false; }

编辑:我把替换放错地方了。我相信这段更新的代码应该用只来自textarea的文本中的
来替换换行符。以前,我是在整个HTML上这样做的。

你似乎有一些隐式全局变量,achtung!你似乎有一些隐式全局变量,achtung!我是ssumed您希望在表单提交上完成此操作。但是,使用我的答案中所示的替换将在任何地方都起作用。嗯,无论出于何种原因,这样做只是删除页面上的提交按钮并禁用文本编辑。是的-对此表示歉意!我将替换调用放在了错误的位置。请查看更新的答案。我假设您希望ted在表单提交上完成了此操作。但是,使用我的答案中所示的替换将在任何地方工作。嗯,无论出于何种原因,这样做只是删除页面上的提交按钮并禁用文本编辑。是的,对此表示抱歉!我将替换调用放在了错误的位置。请查看更新的答案。