나는 조금 느린 오늘 해요,하지만 난 previousSibling은의 사용이 잘못 생각합니다. 부모 노드가 아닌 자식 노드 cx와 관련이 있어야한다고 생각합니다. 그래서 node.previousSibling이 아닌 cx.previousSibling을 사용해야합니다. 이전 예제를 편집하여 이전의 벙어리 응답을 제거했습니다 ... 시도해보십시오.
<div id="ir">
<p id="ie">test</p>
<img src="test.gif">
</div>
<script type="text/Javascript">
var node = document.getElementById("ir");
img.setAttribute("onclick","der()");
var cx = node.childNodes[1];
function der(){
node.insertBefore(cx,cx.previousSibling);
}
2 일 후 편집! .... 물론 위 예제는 이미지의 실제 previousSibling이/P 태그 클로저와 이미지 사이의 개행 문자이기 때문에 P 엘리먼트와 이미지를 교환하지 않습니다.
<script>
function swapDivs(obj) {
if(obj.previousSibling){ // if it's null, then it's already the first element //
obj.parentNode.insertBefore(obj, obj.previousSibling);
}
}
</script>
<div id="ir">
<p id="ie">test</p><img src="http://i2.ifrm.com/4639/142/emo/drool.gif" onclick="swapDivs(this);" />
</div>
그것은를 해결하지 않습니다 'IMG'어디서나 정의라는 목적이 없기 때문에 더 중요한 코딩 관점에서, 그것은 내가 일하는 대안으로이를 제공합니다 ... 작동하지 않습니다 개행 문제, 방금 HTML을 다시 형식화했습니다.
그러나 img 문제를 해결하고 함수를 사용자 정의 할 필요없이 클릭 가능한 DOM 객체에 함수를 추가하는 일반적인 방법을 제공합니다.
줄 바꿈/공백 문자 형제로 문제를 해결하는 방법을 배우 겠지만, 어렵지 않아야합니다. 여기
이 코드는 불완전, 당신이 그것을 해결할 수 있습니까? (함수 der()에서 열린 중괄호). 또한 시각적 효과와 같이 주문을 변경하려는 이유를 설명하십시오. 사용할 수있는 경우 조작하려는 오브젝트의 코드를 포함 시키십시오. – ktamlyn
_ "그러나 작동하지 않습니다. 어떤 제안입니까?"_ - 제안 : "작동하지 않습니다"는 유효한 문제 설명이 아님을 알려주십시오. – CBroe
내 영어로 죄송합니다. – enix