Javascript 交换2个div元素

Javascript 交换2个div元素,javascript,html,asp.net,Javascript,Html,Asp.net,所以我想交换两个内部有CKEditor的div元素。我查看了前面的一些问题,并试图这样做。一切正常,元素交换了。但其中一个元素将丢失其内容并变得不可编辑 <div id="sections"> <div id="apresentacao_div"> <label id="apresentacao_label" for="apresentacao">Apresentação</label>

所以我想交换两个内部有CKEditor的div元素。我查看了前面的一些问题,并试图这样做。一切正常,元素交换了。但其中一个元素将丢失其内容并变得不可编辑

<div id="sections">    
    <div id="apresentacao_div">
            <label id="apresentacao_label" for="apresentacao">Apresentação</label>
            <button class="btn btn-default">
                <span class="glyphicon glyphicon-remove"></span>
            </button>
            <button class="btn btn-default">
                <span class="glyphicon glyphicon-arrow-up"></span>
            </button>
            <CKEditor:CKEditorControl ID="apresentacao"></CKEditor:CKEditorControl>
    </div>
    <div id="intro_div">
            <label id="intro_label" for="intro">Introdução</label>
            <button class="btn btn-default" onclick="remove(this)">
                <span class="glyphicon glyphicon-remove"></span>
            </button>
            <button class="btn btn-default" onclick="upDiv(this)">
                <span class="glyphicon glyphicon-arrow-up"></span>
            </button>
            <CKEditor:CKEditorControl ID="intro"></CKEditor:CKEditorControl>
    </div>
</div>

阿普雷森塔昂
介绍
我想用id=“sections”替换div中的两个div。这是我要交换的代码:

function upDiv(ex) {
  var div = document.getElementById("sections").getElementsByTagName("div");
  for (i = 0; i < div.length; i = i + 4) {
    if (div[i + 4].id.localeCompare(ex.parentNode.id) == 0) {
      swapElements(div[i + 4], div[i]);
      return false;
    }
  }
  return false;
}

function swapElements(obj1, obj2) {
  obj2.nextSibling === obj1 ? obj1.parentNode.insertBefore(obj2, obj1.nextSibling) : obj1.parentNode.insertBefore(obj2, obj1);
}
函数upDiv(ex){
var div=document.getElementById(“节”).getElementsByTagName(“div”);
对于(i=0;i
for循环增加4,因为将textarea转换为CKEditor会添加很多新的div(在本例中为4)。
有人能帮忙吗?

我不太熟悉你在做什么,但我会尝试使用“克隆”方法,然后从页面上删除原始元素。可能是因为没有复制值,只有大纲是复制的,但克隆应该意味着它复制页面上的内容,而不是复制页面源中的内容。

换成交换数据怎么样?移动DOM元素也会给我带来问题,但这是可行的:

将upDiv替换为以下内容:

function upDiv()
{
    var introData = CKEDITOR.instances['intro'].getData();
    var presentacaoData = CKEDITOR.instances['apresentacao'].getData();
    CKEDITOR.instances['intro'].setData(presentacaoData);
    CKEDITOR.instances['apresentacao'].setData(introData);
    return false;
}
这将从一个数据库中获取数据,并将其放入另一个数据库中,反之亦然

另外,我注意到您的控件没有设置
runat
server属性。您可能需要更改此设置:

<CKEditor:CKEditorControl runat="server" ID="intro"></CKEditor:CKEditorControl>

最后,通过按钮调用函数,如下所示:

<button class="btn btn-default" onclick="return upDiv();">
    <span class="glyphicon glyphicon-arrow-up"></span>
</button>


像这样的问题被否决是最近如此多仇恨的原因@StackJP对他的问题进行了完美的描述,展示了解决问题的努力,并添加了额外的注释来解释为什么他的一些代码看起来很奇怪。这里怎么了?有几个原因他可能被否决了。1) 看起来他正在使用asp.net,但它没有被标记。2) 目前尚不清楚他是想将这些div相互交换,还是与其他元素交换。3) 我在他的标记中没有看到任何元素
部分
。我做了一些更正。@StackJP那么你想用
apresentacao
交换
intro
?@HanletEscaño是的,这就是我想做的!