将javascript保留在新的javascript元素中

时间:2012-05-11 11:03:03

标签: javascript styles nicedit

我正在开发一个网页但是我遇到了一些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来添加更多textareas:

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添加textarea时,它没有正确的样式;它没有实现Nicedit。问题是textareas都是标准的,所以两种情况下的代码没有区别。我不太了解javascript,但我认为问题可能是Nicedit代码在页面加载时运行ONCE,就是这样。 知道如何在页面加载时运行(&lt; =已经完成)以及运行addchapter函数时

相关的HTML位是:

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

我可以看到奇怪行为的页面是 this (断开的链接),在第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"

2 个答案:

答案 0 :(得分:4)

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

nicEditors.findEditor(editorID);

或者您可以再次致电nicEditors.allTextAreas()。但我不确定这是否会从已经存在的编辑中删除现有内容。

来源:The API

答案 1 :(得分: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) {
                }
            }
        });