我正在开发一个网页,但我遇到了一些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>
这适用于页面的默认文本区域。问题是我也有这个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。问题是文本区域都是标准的,因此在这两种情况下代码之间没有区别。我对javascript不太了解,但我认为问题可能是Nicedit代码在页面加载时运行一次,仅此而已。知道如何在页面加载(<=已经完成(和运行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"
您必须为添加到页面的文本字段分配唯一 ID。要将其转换为编辑器,您可以调用;
nicEditors.findEditor(editorID);
或者你可以再次打电话给nicEditors.allTextAreas()
。但我不确定这是否会从已经存在的编辑器中删除现有内容。
来源:API。
您可以将 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) {
}
}
});