Javascript 如何通过cloneNode(true)函数使克隆的textarea的tinyMCE可编辑

Javascript 如何通过cloneNode(true)函数使克隆的textarea的tinyMCE可编辑,javascript,tinymce,Javascript,Tinymce,当我尝试使用cloneNote(true)克隆textarea时,克隆的textarea不可编辑。有人知道如何解决这个问题吗?示例代码如下所示: <html> <head> <script type="text/javascript" src="/javascripts/tiny_mce/tiny_mce.js"></script> <script type="text/javascript"> tinyMCE.init({

当我尝试使用cloneNote(true)克隆textarea时,克隆的textarea不可编辑。有人知道如何解决这个问题吗?示例代码如下所示:

<html>
<head>
<script type="text/javascript" src="/javascripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
        theme : "advanced",
        mode : "textareas",
});
</script>

<script type="text/javascript">

testclonenode = {

    addAbove : function (element) {
        var rowEl = element.parentNode.parentNode.parentNode;
        var rowElClone = rowEl.cloneNode(true);

        rowEl.parentNode.insertBefore(rowElClone, rowEl);

        return false;
    }
};
</script>
</head>

<body>
<table>
<tr><td>
    <textarea name="content" style="width:100%">this is a test </textarea>
<p> <button onclick='return testclonenode.addAbove.call(testclonenode, this);'> Add above </button>
</td></tr>
</table>
</body></html>

tinyMCE.init({
主题:“高级”,
模式:“文本区域”,
});
testclonenode={
addover:函数(元素){
var rowEl=element.parentNode.parentNode.parentNode;
var rowElClone=rowEl.cloneNode(true);
rowEl.parentNode.insertBefore(rowElClone,rowEl);
返回false;
}
};
这是一个测试
加在上面

它不是那样工作的。此外,不可能使用dom操作移动tinymce编辑器

tinymce wiki声明如下:

<html>
<head>
<script type="text/javascript" src="/javascripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
        theme : "advanced",
        mode : "textareas",
});
</script>

<script type="text/javascript">

testclonenode = {

    addAbove : function (element) {
        var rowEl = element.parentNode.parentNode.parentNode;
        var rowElClone = rowEl.cloneNode(true);

        rowEl.parentNode.insertBefore(rowElClone, rowEl);

        return false;
    }
};
</script>
</head>

<body>
<table>
<tr><td>
    <textarea name="content" style="width:100%">this is a test </textarea>
<p> <button onclick='return testclonenode.addAbove.call(testclonenode, this);'> Add above </button>
</td></tr>
</table>
</body></html>
mceAddControl

转换指定的textarea或div 进入具有 指定ID

例如:

tinyMCE.execCommand('mceAddControl',false,'mydiv');

因此,当您克隆一个文本区域时,还有一个问题:您将有两个相同的id,这将导致访问正确的tinymce实例时出错。

我通过使用一个id来实现这一点,该id在每次触发克隆函数时递增,因此

var insertslideID = 0;
function slideclone() {
    $('<div class="slides"><textarea name="newslide['+insertslideID+'][slide_desc]" id="mydiv'+insertslideID+'"></textarea></div>').insertAfter('div.slides:last');
    tinyMCE.execCommand('mceAddControl',false,'mydiv'+insertslideID);
    insertslideID++;
}
$('input[name=addaslidebtn]').click(slideclone);
var insertslideID=0;
函数slideclone(){
$('').insertAfter('div.slides:last');
execCommand('mceAddControl',false,'mydiv'+insertslideID);
insertslideID++;
}
$('input[name=addaslidebtn]')。单击(slideclone);

看起来很有效。

稍微整洁一点,我只是在id中使用了一个数字-copy1是我按钮的名称-我将新元素添加到容器的末尾

var count = 0;


 $("#copy1").click(function(){
  var newId = count;
  $( "#first" ).clone().appendTo( "#container" ).prop({ id: newId, });
  tinyMCE.execCommand('mceAddControl',false,newId);
  count++;
  });

我遇到了类似的问题,除了我的元素ID(不仅仅是textareas)可以是任何东西,而且同一个ID总是出现两次。我所做的应该是非常低效的,但是页面上有几十个元素,没有明显的性能损失

基本上我先删除了TinyMCE ID(使用jQuery):


然后我重新初始化了所有相关元素的TyMyCE。

很高兴能够帮助(请考虑投票回答我的问题并接受它)。