2012-05-11 2 views
0

웹 페이지를 개발 중이지만 일부 자바 스크립트 코드로 인해 문제가 발생했습니다.자바 스크립트 요소를 새 자바 스크립트 요소로 유지하십시오.

나는 그것의 메인 페이지에 명시된 바와 같이, 복사만큼 쉽게, 텍스트 영역에 대한 WYSIWYG, 같은 Nicedit를 사용하고/내 웹 페이지의 아무 곳이 2 줄을 붙여 넣으로 좋은 일하고

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

페이지의 기본 텍스트 영역입니다. 문제는 나는 또한 더 텍스트 영역 추가하려면이 자바 스크립트 가지고있다 :

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; 
    } 

내가 자바 스크립트를 통해 텍스트 영역을 추가 할 때, 그것은 적절한 스타일을 가지고하지 않습니다; Nicedit을 구현하지 않습니다. 문제는 텍스트 영역이 모두 표준이므로 두 경우 모두 코드간에 차이가 없다는 것입니다. 너무 많은 자바 스크립트를 모르지만 페이지가로드 될 때 Nicedit 코드가 한 번 실행되는 문제 일 수 있다고 생각합니다. 페이지가로드 될 때 (< = 이미 완료되었을 때) 그리고 addchapter 기능이 실행될 때 실행되도록하는 방법에 대한 아이디어가 있습니까? 제 1 장에서 당신은 '장을 추가'버튼을 참조

<div id="chapters"> 
</div> 
<button type="button" onclick="addchapter()"> Add chapter </button> 
당신이 이상한 행동을 볼 수 있습니다

내 페이지 (깨진 링크)입니다 :

관련 HTML 비트는 이것이다 .

정말 고마워요.

EDIT 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'를 호출하고 각 새로 만든 텍스트 영역 요소를 통과해야, 문제를 알고 코드에 시도 {} 잡기 (전자) {} 블록을 추가 할 수 있습니다 그것들을 만들거나'nicEditors.allTextAreas'를 계속 호출 할 수 있으며 이미 추가 된 항목이 무엇인지 알 수 있습니다. 문서에 설명되어 있습니다. – RobG

+0

어떻게이 오류를 해결 했습니까? – Volatil3

+0

나는 Nicedit을 완전히 버리고 [CKEditor] (http://ckeditor.com/)와 함께 갔다. 더 완성되어 있고 설치할 수있는 많은 pluggins가있다. –

답변

4

을 당신은에 고유 ID를 할당해야 는 페이지가로드가이 발생합니다 페이지에 추가하는 텍스트 필드 편집기로 변환하려면 다음을 호출 할 수 있습니다.

nicEditors.findEditor(editorID); 

또는 nicEditors.allTextAreas()으로 다시 전화 할 수 있습니다. 그러나 이미 존재하는 편집자에게서 기존 내용을 제거 할 지 확실하지 않습니다.

출처 : The API.

+0

내가 모두 '시도 장 추가 < "; nicEditors.findEditor ('nnicedit ') addchapter()"버튼 타입 = "버튼"의 onclick =>을'(신규 요소에 할당 'ID ='nnicedit'')와' '. 그 중 어느 것도 일 ... –

+0

@FrankPresenciaFandos 콘솔에 오류가 있습니까? – Jivings

+0

나는 그것을 찾고 있었지만 그것을 얻는 방법을 찾을 수 없었다. 오류를 어떻게 확인합니까? 확장 기능을 통해? 우분투 용 Chrome을 사용하고 있습니까? –

0

당신은 내가 생각

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) { 
       } 
      } 
     });