0

Webページを開発していますが、JavaScriptコードで問題が発生しました。

NiceditをtextareasのWYSIWYGとして使用しています。これは、メインページに記載されているように、この2行をWebページの任意の場所にコピーして貼り付けるのと同じくらい簡単です。

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

これは、ページのデフォルトのテキスト領域でうまく機能しています。問題は、テキストエリアを追加するためのこの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についてはあまりよくわかりませんが、問題は、ページの読み込み時にNiceditコードが1回実行されることである可能性があると思います。それだけです。ページが読み込まれたとき(<=すでに完了)および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"
4

2 に答える 2

4

ページに追加するテキストフィールドに一意のIDを割り当てる必要があります。それをエディターに変換するには、次に呼び出すことができます。

nicEditors.findEditor(editorID);

nicEditors.allTextAreas()または、もう一度お電話ください。しかし、それによって既存のコンテンツが既存のエディターから削除されるかどうかはわかりません。

ソース:API

于 2012-05-11T11:07:21.050 に答える
0

コードにtry{}catch(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) {
                }
            }
        });
于 2013-07-05T20:50:49.003 に答える