2012-05-11 74 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) { 
       } 
      } 
     });