Javascript 交换2个div元素
所以我想交换两个内部有CKEditor的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>
<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是的,这就是我想做的!