2012-05-11 38 views
0

我正在开发一个网页,但我遇到了一些JavaScript代码的麻烦。在新的JavaScript元素内保持JavaScript

我现在用的是Nicedit所见即所得的文字区域,其中,在其主页所说,是因为拷贝一样简单/在我的网页的任意位置粘贴此2号线:

<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script> 
<script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script>   

一个与伟大的工作,页面的默认textareas。问题是,我也有这个JavaScript来添加更多的文字区域:

function addchapter() 
    { 
    if (num_chapter < 10) 
    { 
    var num=num_chapter+1; 
    document.getElementById('chapters').innerHTML += "<h3>Chapter " + num + "</h3> Title: <input type='text' name='titlechapter_" + num + "'><br>Content:<textarea name='chapter_" + num + "'></textarea>"; 
    } 
    else if (num_chapter == 10) 
    { 
    document.getElementById('chapters').innerHTML += "<br />Maximum is 10 chapters."; 
    } 
    num_chapter += 1; 
    } 

所以,当我通过JavaScript添加一个文本,它不具备适当的风格;它没有实施Nicedit。问题是textareas都是标准的,所以两种情况下的代码都没有区别。我不太了解JavaScript,但我认为问题可能是Nestedit代码在页面加载时运行ONCE,就是这样。 当页面加载时(< =已完成)以及addchapter函数运行时如何使其运行?

相关的HTML位是这样的:

<div id="chapters"> 
</div> 
<button type="button" onclick="addchapter()"> Add chapter </button> 

我的页面,在这里你可以看到奇怪的行为是 (链路中断),在第1章看到“添加章节”按钮。

非常感谢大家。

编辑1,错误控制台输出: 页面加载时,它抛出这样的:

"GET http://js.nicedit.com/nicEditIcons-latest.gif 
bkClass.extend.getStylenicEdit-latest.js:8 
bkClass.extend.constructnicEdit-latest.js:38 
AnicEdit-latest.js:8 
bkClass.extend.addInstancenicEdit-latest.js:37 
bkClass.extend.panelInstancenicEdit-latest.js:37 
nicEditors.allTextAreasnicEdit-latest.js:37 
bkLib.domLoaded" 

当我添加了新的篇章:

"Uncaught TypeError: Object #<bkClass> has no method 'removeInstance' 
bkClass.extend.checkReplacenicEdit-latest.js:37 
bkClass.extend.panelInstancenicEdit-latest.js:37 
nicEditors.allTextAreasnicEdit-latest.js:37 
(anonymous function)/file/new/:112 
onclick" 
+0

我想你知道你的问题,有可能你要叫'nicEditors'并通过每个新创建的textarea元素为你创建它们,或者您可以继续调用'nicEditors.allTextAreas',它会知道它已被添加到哪些内容中。文件应该告诉你。 – RobG

+0

你是怎么陷入这种错误的? – Volatil3

+0

我放弃了Nicedit,并与[CKEditor](http://ckeditor.com/)一起使用,它更加完整,并且有大量可以安装的插件。 –

回答

4

您必须分配一个唯一的ID给您添加到页面的文本字段。要将其转换为编辑器,可以随后调用;

nicEditors.findEditor(editorID); 

或者您可以再拨打nicEditors.allTextAreas()。但我不确定这是否会从现有编辑中删除现有内容。

来源:The API

+0

我尝试了''(分配给新元素'id ='nnicedit'') '。他们都没有工作...... –

+0

@FrankPresenciaFandos控制台中的任何错误? – Jivings

+0

我一直在寻找,但无法找到如何得到那个。我如何检查错误?通过扩展?我使用Ubuntu的Chrome,任何建议? –

0

您可以添加尝试{}赶上(E){}块到你的代码

jQuery('.js-control-des').each(function() { 
      var index = jQuery(this).attr('lang'); 
      var editor = jQuery(this).find('textarea'); 
      var editor_id = editor.attr('id'); 
      var editor_loaded = editor.attr('rel'); 
      if (editor_loaded == undefined || editor_loaded != null || editor_loaded == 0) { 
       var editor_new_width = parseFloat(editor.css('min-width')) + 7 + 'px'; 
       editor.css({ 
        width: editor_new_width, 
        'max-width': editor_new_width, 
        'min-width': editor_new_width 
       }); 
       try { 
        new nicEditor({maxHeight: 300}).panelInstance(editor_id); 
        jQuery(this).attr('rel', 'editor-loaded'); 
        jQuery(this).find('.nicEdit-main').attr('data-index', index).keyup(function (e) { 
         if (vnLineUcp.editorKeyUp(jQuery(this)) == false) { 
          return false; 
         } 
        }); 
       } catch (e) { 
       } 
      } 
     });